Python独学ならTech-Joho TOP > Python問題集 > int型とstr型
問題
ユーザに数値を入力してもらい、入力された値を256倍した結果を表示したい。
このために、下のプログラムを作成したが、期待通りに動かない。
# fix hereと書いてある行だけを修正して、期待通りに動くようにせよ。
user_input = input("整数を入力してください。")
my_ans = user_input * 256 # fix here
print(my_ans)
チャレンジ: ユーザが数値ではない文字列を入力したときの処理を追加せよ。
実行結果の例
ユーザが数値、例えば8を入力した時は下のように表示されます。
2048
回答例
ユーザの入力した値をint型に変換しています。
user_input = input("整数を入力してください。")
my_ans = int(user_input) * 256 # fix here
print(my_ans)
解説
乗算演算子*で、掛け算をするには*の両側に変数や定数が整数(int型)か、小数(float型)でなければいけません。
しかし、input関数の戻り値は文字列(str型)です。
問題文のままだと、
*の片方は数値(str型)で、もう一方は整数(int型)なので、文字の繰り返しが実行されてしまいます。
そこで、回答例ではstr型の数値を、int型に変換しています。
Int()という関数の引数に、数値に変換可能な文字列を指定すると、戻り値がint型に変換された結果になります。
Intに限らず、float、strでも、型と同じ名前の関数は、引数をその型に変換する機能を持っています。
print(type("22"))
print(type(float("22"))) # 小数に変換
print(type(int("22"))) # 整数に変換
Pythonにおける乗算(multiplication)演算子の使い方についてはこちらをご覧ください。
数値の型の変換については、下のリンク先ページにも参考になる問題があります。
int型とstr型
組み込み関数intの機能についてはこちらもご覧ください。
Python3 reference 組み込み関数int