[解決!Python]input関数でキーボード入力を受け取るには:解決!Python
input関数を呼び出すとユーザーからのキーボード入力を受け取れる。その基本と注意事項、文字列を数値に変換する方法を紹介する。
* 本稿は2023年2月28日に公開された記事をPython 3.12.4で動作確認したものです(確認日:2024年7月10日)。
# プロンプトなし
n = input()
print(f'your input: {n}')
# プロンプトあり
n = input('input number: ')
print(f'your input: {n}')
# 戻り値は常に文字列なので必要に応じて型変換が必要
n = input('input number: ')
result = n * 2
print(f'{n} * 2 = {result}')
n = input('input number: ')
result = n - 1 # TypeError
print(f'{n} - 1 = {result}')
n = input('input number: ')
n = int(n) # int関数でint型の値に変換
result = n * 2
print(f'{n} * 2 = {result}')
n = input('input float number: ')
n = float(n) # float関数でfloat型の値に変換
result = n - 1.5
print(f'{n} - 1.5 = {result}')
input関数
Pythonでキーボードからの入力を受け取るにはinput関数を使用する。入力を受け取る際に何かのプロンプトを表示したいときにはプロンプト(文字列)をinput関数に指定する。プロンプトが必要なければ引数なしでinput関数を呼び出す。
以下に例を示す。
# プロンプトなし
n = input()
print(f'your input: {n}')
# プロンプトあり
n = input('input number: ')
print(f'your input: {n}')
対話環境で上のコードを実行した例を以下に示す。
>>> n = input()
100
>>> print(f'your input: {n}')
your input: 100
>>> n = input('input number: ')
input number: 120
>>> print(f'your input: {n}')
your input: 120
このようにして受け取った値は常に文字列である点には注意が必要だ。上では「input number: 」と数値の入力を促しているが、実際に受け取るのは文字列になる。そのため、数値を受け取ったつもりで処理を進めると予想外の結果となる。
以下に例を示す。
n = input('input number: ')
result = n * 2
print(f'{n} * 2 = {result}')
これを対話環境で実行した例を以下に示す。
>>> n = input('input number: ')
input number: 10
>>> result = n * 2
>>> print(f'{n} * 2 = {result}')
10 * 2 = 1010
ここではユーザーは「10」を入力したが、これは文字列だ。そのため、次の行では「文字列 * 2」という演算が行われ結果は、ユーザー入力を繰り返した「1010」という文字列になる。
例外が発生することもある。
n = input('input number: ')
result = n - 1 # TypeError
print(f'{n} - 1 = {result}')
このコードは受け取った値から1を減算しようとしている。対話環境での実行例を以下に示す。
>>> n = input('input number: ')
input number: 100
>>> result = n - 1 # TypeError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'
>>> print(f'{n} - 1 = {result}')
100 - 1 = 1010
文字列と整数との減算は定義されていないのでTypeError例外が発生した(ここでは、最後の行では先ほどの「文字列 * 2」で得られた「1010」が処理結果として表示されている)。
このようにinput関数では文字列が返されるので、それを数値として扱いたいのであればint関数やfloat関数などで数値型の値に変換する必要がある。
整数値に変換するにはint関数を使う。
n = input('input number: ')
n = int(n) # int関数でint型の値に変換
result = n * 2
print(f'{n} * 2 = {result}')
対話環境での実行例を以下に示す。
>>> n = input('input number: ')
input number: 11
>>> n = int(n) # int関数でint型の値に変換
>>> result = n * 2
>>> print(f'{n} * 2 = {result}')
11 * 2 = 22
浮動小数点数値に変換するにはfloat関数を使う。
n = input('input float number: ')
n = float(n) # float関数でfloat型の値に変換
result = n - 1.5
print(f'{n} - 1.5 = {result}')
対話環境での実行例を以下に示す。
>>> n = input('input float number: ')
input float number: 3.0
>>> n = float(n) # float関数でfloat型の値に変換
>>> result = n - 1.5
>>> print(f'{n} - 1.5 = {result}')
3.0 - 1.5 = 1.5
上の2つの例は、望んだ通りの形式の入力が行われているので問題はなかった。だが、数値の入力を求めているのに、そうではない値が入力されることもある。
>>> n = input('input float number: ')
input float number: hoge
>>> n = float(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'hoge'
このようなときには、ユーザー入力を数値に変換できるかどうかをチェックする必要がある。これについては「文字列が数値へ変換可能かどうかを判定するには」を参照されたい。
Copyright© Digital Advantage Corp. All Rights Reserved.