トップページ -> Python入門 基礎編 -> 入力とデータ型②

入力とデータ型について学ぼう②

前回は10+11=1011の原因を特定しました. その原因は受け取った入力が文字列型として扱われているためでした. 今回はデータ型の変換を行って10+11=21となるようにします. Pythonではデータ型を変換するいくつかの関数が用意されています.

以下のコードを見てみましょう. 型の変換を行いデータ型がどうなるかを調べるプログラムです.

a = 10
print(type(a))
b = str(a) # aを文字列にしたものをbに代入
print(type(b))
c = int(b) # bを整数型にしたものをcに代入
print(type(c))
以下のように表示されます.
データ型1
うまい具合に型の変換ができてますね. このような型の変換を「キャスト」と言います. str関数やint関数,float関数を使えば,入力に対して数値の計算ができそうです. 実際にやってみましょう.

実際のプログラム


a = input()
b = input()
a = int(a) # 文字列aを整数型に直す
b = int(b) # 文字列bを整数型に直す
print(a+b)
実行すると以下のようになります
データ型とinput1
上手くいきましたね. また,input関数をintの中に入れ子にすることで,短くコードを書くこともできます.

a = int(input(a)) # 文字列aを整数型に直す
b = int(input(b)) # 文字列bを整数型に直す
print(a+b)
実行結果は同じです.

演習問題

それでは演習問題を解いてみましょう. f(x) = x**3 + x**2 + x + 1 とします. 入力を受け取りf(x)の値を出力するようなプログラムを書いてください.

演習問題の解答例


x = int(input()) # 入力を整数型に変換する
print(x**3 + x**2 + x + 1)
ちなみにこのプログラムは整数値に対してのみ正確に動作します. 試しに入力として1.1を渡してみましょう.
データ型とinput 2
このようなエラーが出ました. これは文字列型の"1.1"が整数型に変換できないためにエラーが起きています.(ちなみにfloat型をintに変換すると小数点以下を切り捨てた値を返します.) 入力として小数も受け取れるようにfloat関数を用いて以下のように改良してみます.

x = float(input()) # 入力をfloat型に変換する
print(x**3 + x**2 + x + 1)
データ型とinput 3
1行目を少し変えました.int関数ではなくfloat関数を使うことで小数も受け取れるようになりました.

今回は入力とデータ型について学びました. プログラミングにおいてデータ型に気を付けなければいけないということを実感してもらえたと思います. 次回はstr型 int型 float型 以外のより複雑なデータ型について解説します.

<- 前へ戻る 【目次に戻る】 次へ進む ->