検索
連載

[解決!Python]input関数でキーボード入力を受け取るには解決!Python

input関数を呼び出すとユーザーからのキーボード入力を受け取れる。その基本と注意事項、文字列を数値に変換する方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「解決!Python」のインデックス

連載目次

* 本稿は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関数などで数値型の値に変換する必要がある。

Copyright© Digital Advantage Corp. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る