大人のための『夢を叶える学校』

「夢は叶えるもの!」険しい道でも突き進めば、その先に必ず光が見える。実現した経緯や飲食店経営・起業の仕方などをはじめ、昨今話題の『副業』のカテゴリーについての最新情報も発信しています。

プログラミング実践記【④関数】実践しながら学ぶ:初級編5日目

(✿✪‿✪。)ノコンチャ♡

 Pythonプログラミングも5日目になりました。

今回で、初級編最終日となります。

演算子の優先順位、変数を学び、関数を学んでいきましょう。

 『関数』の中でも、

対話型プログラムによく使われるプログラミングについて、

今回触れていこうと思います。

 

f:id:success-life:20210816035545p:plain

Python関数

 input 関数

2日目に学んだ『print()』は、

指定したデータを出力(表示)」する関数でした。

それに対して、

『input()』関数はユーザーにデータの入力を求めます。

この input 関数は、

ユーザーがキーボードから何かを入力したら、

その結果の文字列を返してきます。

この関数が返してくる値を『戻り値(もどりち)』と言います。

 

input 関数の戻り値は、後で使えるように変数に入れておきます。

つまり、

  変数=input('メッセージ文字列')

という記述になります。

「メッセージ文字列」が表示され、入力待機状態になります。

ここでユーザーが入力すると、それが「変数」に代入されます。

 

加工して出力

「+」演算子は、

左辺と右辺が数値ならばそれを足せという命令ですが、

それらが文字列の場合は、

「連結せよ」という命令になる。

 

  text=input('入力せよ')

  print('あなたが入力したのは:'+text)

 

プログラミングして実行してみましょう。

f:id:success-life:20210817020953p:plain

プログラミングinput関数①

【Run】➡【Run Module】をクリックし実行します。

 

f:id:success-life:20210817021135p:plain

プログラミングinput関数②

「入力せよ」というメッセージが表示され、

入力待機状態になります。

 

f:id:success-life:20210817021310p:plain

プログラミングinput関数③

「おめでとう」とキーボードで入力し、Enterキーを押します。

 

f:id:success-life:20210817021426p:plain

プログラミングinput関数④

結果が表示されました。

 

データの「型」

これまで「数値」や「文字列」などのデータを扱ってきましたが、

これらのデータの種類を『型(Type)』といいます。

   文 字 列  :str(string)型

  数値/整数:int(integer)型

  数値/実数:float(floating point number)型

 

input 関数の戻り値は、常に str 型 です。

従って、先日学んだことを組み合わせてみると、 

  teika=input('定価は?')

       suuryou=input('数量は?')

       azukari=input('預かり金は?')

  urine=teika*suuryou*1.1

  amari=azukari-urine

       print('おつりは'+amari+'円です')

 と、記述できます。

 

しかし、残念ながらこのプログラムはエラーとなり、

上記プログラム4行目でプログラムが停止してしまいます。

             (※エラーについては本記事の最後に解説します)

つまり、

input関数の戻り値は str型(文字列)であり、

文字列に1.1(数値)を掛けても答えは出ません。

 

文字列のデータ型を数値のデータ型に変換する

文字列として代入されたデータを数値に変換するには、

  int 関数

を使います。

 

   int 関数   : 文字列を整数に変換して返す

  float 関数 : 実数に変換して返す

   str 関数   : 文字列に変換して返す

 

数値に変換してプログラムを記述してみると、 

  urine=int(teika)*int(suuryou)*1.1

  amari=int(azukari)-int(urine)

       print('おつりは'+str(amari)+'円です')

 

では、実際にプログラムを記述して実行してみましょう。

f:id:success-life:20210817031307p:plain

プログラミングint関数①

【Run】➡【Run Module】をクリックします。

 

f:id:success-life:20210817031449p:plain

プログラミングint関数②

まず、「定価は?」と表示され、入力待機状態になります。

「100」と入力すると、

次に、「数量は?」と表示され、入力待機状態になります。

「4」と入力すると、

続いて、「預り金は?」と表示され、入力待機状態になります。

「1000」と入力すると、

「おつりは560円です」と表示されました。


引数と戻り値

これまで、『print関数』や『input関数』を使ってきましたが、

その他にもたくさんの関数があります。

それらの関数を覚えることで、

幅広いプログラムが作れるようになります。

 

 

ここで、

改めて関数の使い方をおさらいしておきましょう。 

 

関数の後には必ずカッコが付き、

カッコ内には「文字列」「数値」「式」などを記述してきました。

これを『引数(ひきすう)』と呼びます。

  print(表示したいもの

この「表示したいもの」を引数といいます。

また、

「input関数」や「int関数」のように、

文字列や数値などの何らかの値を返してくる関数もあります。

それらの関数が返す値を『戻り値(もどりち)』と呼びます。

  変数=int(文字列)*3

「文字列」を引数にして、int関数が返す値が戻り値です。

 

複数の引数

 これまでは、1つの引数を指定してきましたが、

複数の引数を受け取れる関数もあります。

記述の仕方は、

カッコ内で「,(カンマ)」で区切ります。

  print('整数と実数',100,2.5)

実行すると、

f:id:success-life:20210817040957p:plain

複数の引数

このように表示されます。

 

ここでは、print関数についてお話しましたが、

他の関数でもそうだとは限りません。

受け取れる引数の数とか、受け取った引数をどう使用するかは、

関数によって異なってきます。

 

キーワード引数

ほとんどの引数にはそれぞれ名前が付いています。

  引数名=値

で指定する記述では『キーワード引数』と言います。

引数sep

print関数の 『sep』は、

区切り文字(separator)を指定するキーワード引数です。

  sep=':'

引数を表示する際に、『:』で区切って表示させる命令です。

先程のprint関数に追加してみます。

  print('整数と実数',100,2.5,sep=':')

f:id:success-life:20210817042934p:plain

キーワード引数sep①

 【Run】➡【Run Module】をクリックします。

f:id:success-life:20210817043037p:plain

キーワード引数sep②

このように表示されました。

 

 print関数などの組み込み関数については、公式サイトを参考にしてください

docs.python.jp

メソッドとは

関数と同様に、

コンピューターに仕事をさせる命令の一種に『メソッド』があります。

  値.メソッド名()

このように、

  目的語(値)+.(ピリオド)+述語(メソッド)

という順に記述します。

 

replaceメソッド

replaceメソッドは、文字列の一部を置換するものです。

つまり、

対象の文字列の中から1つ目の引数の文字列を探して、

2つ目の引数に置換して返します。

  text='こんにちは!'.replace('にち','ばん')

  print(text)

f:id:success-life:20210817045524p:plain

replaceメソッド①

  【Run】➡【Run Module】をクリックします。

 

f:id:success-life:20210817045624p:plain

replaceメソッド②

「こんにちは!」という文字列の中から、

「にち」という文字列を「ばん」に置換して、

「こんばんは!」と表示されています。

 

さいごに 

 今回で【初級編】が最終回になります。

少しはプログラミングの楽しみ方が理解できましたでしょうか。

実際に記述して、

思った通りの結果が得られることが、

達成感に繋がります。

 

チャレンジ精神を忘れず継続して学んでいきましょう。

実際にプログラムを動かしていくと、

『エラー』が発生して、

プログラムの実行が停止することがあります。

 

これが『チャンス』だ!

ということを最後にお伝えします。

つまり、

この「エラー」こそが、

次のステップアップへの『カギ』なのです。 

 

f:id:success-life:20210817050522p:plain

エラーメッセージ
ネームエラー 

 熟練者でもよく目にするのが『ネームエラー(NameError)』です。

これは、関数名などのタイプミスによって引き起こされます。

  pint('こんにちは!')

実行すると、

f:id:success-life:20210817051233p:plain

ネームエラー

エラーメッセージが表示されます。

簡単に説明すると、

  トレースバック(直近で最後の呼び出し)

    ファイル名「C:¥Users… .py」の1行目の無名モジュール内

      pint('こんにちは!')

  名前エラー:名前「pint」は定義されていない

 

 つまり、

「pint」という名前は、

Pythonインタープリタが理解できません

という意味です。

殆どの場合は、スペルミスです。

大文字・小文字の間違いもこのエラーメッセージが表示されます。

 

シンタックスエラー

記述の仕方を間違えると『文法エラー(SintaxError)』が出ます。

このエラーは、ダイアログボックスで表示されます。

  print('こんにちは!)

実行すると、

f:id:success-life:20210817053418p:plain

シンタックスエラー①

簡単に説明すると、

  文法エラー:文字列リテラルの走査中に行末を発見した

 

つまり、

文字列の閉じ「’」が抜けているため、

Pythonインタープリタが文字列だと思って辿っていたら、

行末まで行ってしまった

という意味です。

ここで「リテラル(literal)」は『直定数』といい、

プログラムに記述されている文字列や数値を指します。

 

では、文字列の開き「’」も抜けてしまっていたら、

どうなるでしょう。

  print(こんにちは!)

実行すると、

f:id:success-life:20210817054808p:plain

シンタックスエラー②

同じシンタックスエラーが出ますが、メッセージが違います。

簡単に説明すると、

  文法エラー:識別子の中に不正な文字を発見した

 

つまり、

文字列と認識する「’」が抜けているため、

Pythonインタープリタが文字列ではなく、

変数もしくは関数の名前だと思ってしまったところ、

不正な文字を発見した

という意味です。

ここで「識別子(identifier)」は『他から識別可能な何か』という意味です。

また、

Pythonでは日本語の変数名もプログラムに記述できますが、

「!」は名前に使用することができない記号です。

そのため「不正な文字」と指摘されているのでしょう。

 

タイプエラー

『タイプエラー(TypeError)』は、

データの型に問題があるときに表示されます。

   print(560+'円です')

実行すると、

f:id:success-life:20210817061822p:plain

タイプエラー

簡単に説明すると、

  型エラー:+演算子は被演算子の型をサポートしていません。

       int型とstr型

 

つまり、

print関数のカッコ内で、

Pythonインタープリタが、

数値と文字列を+演算子で連結しようとしたが、

int型とstr型は連結できません

という意味です。

従って、

『str関数』を使って数値を文字列に変換しましょう。

 

  print(str(560)+'円です')

このように記述しなおすと大丈夫です。

 

これで、

Pythonプログラミング【初級編を終了します。

最後までお読みいただきありがとうございました。

 

次回から、

Pythonプログラミング【中級編をスタートさせますので、

引き続きお読みいただけたら嬉しいです。

 

人気ブログランキングにも参加していますので、

ポチっと応援して下さると喜びます!

 

それではまた、お会いしましょう! 

 

   ☆ ☆ ☆  初級編スケジュール  ☆ ☆ ☆

f:id:success-life:20210816032124p:plain

初級編2日目

f:id:success-life:20210816034226p:plain

初級編3日目

f:id:success-life:20210816034348p:plain

初級編4日目

f:id:success-life:20210816035545p:plain

初級編5日目