Python Pythonでキーボードで入力した文字や数値を取得する|input関数・raw_input関数

Pythonでキーボードで入力した文字や数値を取得する|input関数・raw_input関数

python_input_topimage

Pythonでコンソールやコマンドプロンプト、PowerShellなどのキーボードからの入力で操作するキャラクターユーザーインターフェイス(CUI)で実行するプログラムを作成する場合は、キーボードからの入力を受け付ける関数

input()

を使用します。

この記事ではプログラムの使用者を制限したり、ちょっとしたアンケートの作成にも使えるPythonのinput関数の使い方を紹介します。是非参考にしてみてください。


Pyhtonのinput関数でキーボードからの入力文字を取得

Pythonでキーボードからの入力を取得する関数は Python2系とPython3系では異なります。

キーボードからの“入力文字をそのまま取得”する関数は

・Python2系は raw_input()

・Python3系は input()

どちらの関数も基本的に同じ役割で使えます。

ただ混乱しそうですが、Python2系にも input() という“入力文字をそのまま取得しない”関数があるので、Python2系でキーボードからの入力を取得するプログラムを作成する場合には注意が必要です。

Python2.xでキーボードからの入力文字を取得:raw_input()

Python2.xでキーボードからの入力文字を取得するには

raw_input()

を使用します。

Pythonのコンソールでraw_input()の返しを変数[input_string]に代入するコードを入力し実行すると、[>>>]が消え入力待ちの状態になります。

ここでは「あいうえお」と入力し実行

次に変数[input_string]をprintで出力すると、先ほどキーボードで入力した文字列「あいうえお」が出力されました。

>>> input_string = raw_input()
あいうえお
>>> print(input_string)
あいうえお
>>> 

■Python2系のinput関数

前段で注意しなければならない事としてPython2系のinput関数を紹介しました。

Python2系のinput関数はPython3系と違い、キーボードからの入力文字をそのまま取得するのではなく、キーボードで入力したコードの処理結果を取得します。

Pythonのコンソールでinput()の返しを変数[input_code]に代入するコードを入力し実行すると、[>>>]が消え入力待ちの状態になるので、ここでプログラミングコードを入力し実行。

printで変数[input_code]を出力すると、プログラミングコードの処理結果が出力されました。

>>> input_code = input()
"abc" + "123"
>>> print(input_code)
abc123

Python3.xでキーボードからの入力文字を取得:input()

Python3.xでキーボードからの入力文字を取得するには

input()

を使用します。

Pythonのコンソールでinput()の返しを、変数[input_string]に代入するコードを入力し実行すると、[>>>]が消え入力待ちの状態になります。

ここでは「アイウエオ」と入力し実行

次に変数[input_string]をprintで出力すると、先ほどキーボードで入力した文字列「アイウエオ」が出力されました。

>>> input_string = input()
アイウエオ
>>> print(input_string)
アイウエオ
>>>

input関数で文字列を表示しキーボードからの入力を促す

input()でキーボードからの入力を取得する方法を紹介しました。

しかし、このままでは実行後に[>>>]が消えるだけで、入力状態なのか、何を入力したら良いのかが分かりません。

「入力待ち状態なのか、どの様な内容を入力したら良いのか、等の説明を表示したら良さそう」

input関数にはコンソールに表示する文字列の設定が可能で、キーボードからの入力を促す事ができます。

input(“文字列”)

前項のinput関数に文字列を設定しないと、実行後は[>>>]が消えるだけでしたが、文字列を設定する事によりコンソールに文字列が表示され、キーボードのからの入力を促せます。

>>> input_string = input("キーボードで文字を入力してください:")
キーボードで文字を入力してください:ABCDEFG
>>> print(input_string)
ABCDEFG
>>>

input関数を使った会話式アンケート

input()に文字列を設定できる事を利用して、簡単なアンケートを作成してみましょう。

input()に文字列で問を設定、それぞれ変数に代入。最後にキーボードからの入力文字列をまとめた文章を出力。

input_gender = input("性別は?:")
input_Age = input("年齢は?:")
input_Country_you_live_in = input("お住まいの国は?:")


result = "\nあなたの性別は{0}です。\nあなたの年齢は{1}歳です。\nあなたがお住まいの国は{2}です。".format( 
input_gender,input_Age,input_Country_you_live_in)

print(result)


実行:

1問ずつ出題され、答えると次の問題…

全ての問に答えると、キーボードで入力した文字列を含めた結果が出力されます。

アンケートをコンソールで表示

input関数で取得したキーボードからの入力文字を数値として取得

ここまでinput関数でキーボードから入力された“文字列”を取得、そして出力してきました。

そうです、input関数で取得するのは“文字列”です。

試しにキーボードで数字を入力し、その値を使って簡単な計算するコードを実行してみましょう。

結果はエラーと共に、数値’int’ と 文字列’str’を足したらダメと返されました。

やっぱり、キーボードで数字を入力しても、input関数は文字列として取得するようです。

このままでは計算するプログラムには使えません。

>>> input_int = input("キーボードで数値を入力してください:")
キーボードで数値を入力してください:12
>>> print(32 + input_int)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>


キーボードで入力した数字をinput関数で取得し、その数字を計算に使用する場合は、文字列から数値に変換する必要があります。

文字列から数値への変換は簡単、int()もしくはfloat()で囲むだけ。

整数の場合は:int()

浮動小数点数の場合は:float()

今回の例ではint()にinput()を指定。キーボードから入力された数字の文字列を取得し、直ぐ数値に変換しました。
結果は、問題無く整数の加算処理ができました。

>>> input_int = int(input("キーボードで数値を入力してください:"))
キーボードで数値を入力してください:12
>>> print(32 + input_int)
44
>>>

まとめ:input関数の注意しなければならない事

Pythonでキーボードからの文字や数値の入力をinput関数で取得する方法を紹介しました。

今回の記事で注意しなければならない事は2つ。

■Python2系とPython3系で関数名が違う事

・Python2系は raw_input()
・Python3系は input()

■そして同じ関数名なのに機能が違う事

・Python2系の input() はキーボードで入力したコードの処理結果を取得

Pythonでコンソールやコマンドプロンプト、PowerShellなどのキーボードからの入力で操作するキャラクターユーザーインターフェイス(CUI)で実行するプログラムを作成する場合の参考にしてみてください。




Twitter Facebook Pocket LINE はてブ

おすすめの関連記事
コチラの記事も読まれています
あわせてよく読まれている記事