Pythonのinput()文では入力された数値が計算できない?

プログラミングの基礎

こんにちは。IT/経済ジャーナリストで投資家の渡辺です。

前回に引き続き、入力→処理→出力のフローで、プログラムを作っていきます。

<過去記事>

コンピュータ処理のキホンは入力→処理→出力

まずは、前回と同じ流れで、今度は円の面積半径×半径x3.14、またはπr^2。^はコンピュータの表記で累乗を示す)を求めるプログラムを作ってみます。

# coding: utf-8

x = input(“円の半径を入力してください:”)
print(“面積:”, x**2*3.14)

うまく小数の計算ができたでしょうか?

 

変数の中身が文字か整数か小数か指定する

円の面積が計算されるはずが、Type Errorというエラーが出てしまったかと思います。

これはinput()文で入力した数値を、コンピュータが「文字」として受け取ってしまっているからです。

数字でもないのに、計算できるか!」と文句を言っているわけです。

コンピュータの中にある情報は、全て2進数の数値(電気が流れているか、いないか)です。

でも、多くのプログラミング言語では、変数に入れる数値が整数なのか、小数なのか、それとも数字ではなくて文字なのかを指定する必要があります。

何でもいいからどんと来い、という太っ腹な言語もありますが、プログラマーが変数の中身を意識して、正しく意図した通りの処理をさせるには、中身が何であるかを意識する必要があります。

結果的に、プログラムの予期せぬ動作=バグも減らすことにつながります

この中身を「」(タイプ)と言います。

input()文でいったん「これは文字ですよ」という分類シールを貼られた情報を、計算のために「数値」という分類シールに貼り替える必要があります。

これを「型変換」と言います。

整数はint()関数、小数はfloat()関数

整数はint()関数、これは整数を意味する英語intgerから来ています。

また小数はfloat()関数を使います。

floatって浮くという意味で、何だかウキでもないのに不思議です。

これは整数のケタと小数のケタを分ける小数点の位置が固定でなく、数値によって動くので、そのような小数のデータの持たせ方を「浮動小数点」と呼びます。

それでは、まずはキーボード入力された値を整数に変換してみます。

赤字で示したように、文字の入っている変数xint()関数で、整数に変換します

# coding: utf-8

x = input(“円の半径を入力してください:”)
print(“面積:”, int(x)**2*3.14)

うまく計算できたでしょうか?

ただし、このままだと、入力できる数値は整数だけになります。

もし小数も計算できるようにしたい場合は、int()関数の代わりにfloat()関数を使います。

 

<今日の要約ノート>

input()文で入力した値は、たとえ数字でもコンピュータ内部では「文字」として扱われる。計算するなど「数値」としたい場合は、int()関数で整数にするか、float()関数で小数に「型変換」する。

コメント

タイトルとURLをコピーしました