0から始めるPython独学ラボ

化学専門の大学生が趣味で始めたPythonをできるだけ分かりやすく説明します

input関数について②

今回もinput関数について取り扱っていきます。今回は、input関数で陥りがちなエラーを見ていきましょう。次に表示するのは、円の直径の長さを入力すると円周の長さを返すプログラミングです。便宜上円周率は3.14とします。

 

テキストエディタ diameter.py

diameter = input('直径の長さは?')
print(3.14*diameter)

 

このプログラムにはエラーがあります。

 

コマンドライン

python3 diameter.py

直径の長さは?3 

TypeError: can't multiply sequence by non-int of type 'float'

 

なぜエラーが出たのでしょうか?

正解は、input関数が戻り値として持つのは文字列型のオブジェクトだからです。つまり、ユーザーが数値として3を入力したとしても、その3は数値型のオブジェクトではなく文字列型のオブジェクトとして認識されます。そして、文字列型オブジェクトは四則演算ができないので、TypeErrorがはじき出されるという結果になったのです。これを防ぐためには、文字列を浮動小数点型のオブジェクトに変換するfloat関数を使います。float関数は文字列型のオブジェクトを引数にとり、浮動小数点型のオブジェクトを戻り値として返します。上のプログラムを次のように変更しましょう。

 

テキストエディタ diameter.py

diameter = input('直径の長さは?')

diameter = float(diameter)
print(3.14*diameter)

 

そうすると、きちんと動くようになります。

 

コマンドライン

python3 diameter.py

直径の長さは?3 

9.42

 

以上で今回の記事は終わりです。お疲れさまでした。