筆者がPythonを勉強する為に読んだ書籍入門 Python3では、なぜか標準入力関数の解説が掲載されていませんでした。 ただ、使ってみると大変便利な関数なので活用方法を備忘録として残しておこうと思います。
最も基本的な使い方
最も基本的な利用方法は以下の通りです。実行すると標準入力(通常はキーボード)からの入力待ち状態となります。変数xに代入したい内容を入力し、最後にReturnを入力すると入力内容がxに代入されます。
>>> x = input()
5
>>> print(x)
5
入力を促すメッセージを表示
入力を促すメッセージを表示させることも可能です。表示させたい内容をinput関数の引数として渡します。
>>> x = input("数値を入力: ")
数値を入力: 2
>>> print(x)
2
整数として取り出す
まずはinput関数の戻り値の型を見てみます。文字列型(str)と出力されます。
>>> x = input()
2
>>> print(type(x))
<class 'str'>
整数として取り出す場合はint関数(浮動小数点の場合float)を用いてキャストします。
>>> x = int(input())
2
>>> print(type(x))
<class 'int'>
複数の値を一度に入力
基本は文字列
複数の値を一度に標準入力から入力したい場合は多々あります。複数の値をスペース区切りで入力した場合以下の様に変数に代入されます。
>>> x = input()
2 3 4
>>> print(x)
2 3 4
文字列を分解して複数の値の取り出し
これは複数の値をスペースで連結した文字列として代入されています。故に以下の様に内包表記を用いれば複数の値が一度に取り出せます。(int関数でキャストし、整数型として取り出しています。)
>>> x, y, z = (int(x) for x in input().split())
2 3 4
>>> print(x, y, z)
2 3 4
>>> print(type(x), type(y), type(z))
<class 'int'> <class 'int'> <class 'int'>
リストに変換
以下の様にするとリストとして代入できます。
>>> x = input().split()
2 3 4
>>> print(x)
['2', '3', '4']
この場合、文字列のリストになってしまいます。整数値のリストとする為に、リスト内包表記を用います。
>>> x = [int(x) for x in input().split()]
2 3 4
>>> x
[2, 3, 4]
if文との組み合わせ
enumerate文とif文を追加すると取り出す値の個数を制御出来ます。
>>> x = [int(x) for i, x in enumerate(input().split()) if i < 3]
1 2 3
>>> print(x)
[1, 2, 3]
>>> x = [int(x) for i, x in enumerate(input().split()) if i < 3]
1 2 3 4
>>> print(x)
[1, 2, 3]