プログラムを作成する際、ユーザーからの入力を受け取る機能は欠かせません。Pythonでは、input()
関数を使うことで簡単にキーボードからの入力を受け取ることができます。本記事では、input()
関数の基本的な使い方から、数値のみの入力を受け取る方法、複数の値を入力する方法など、実践的なテクニックまで詳しく解説します。
また、input()
以外にも、キーボード入力を扱うためのライブラリや、標準入力から読み込む方法についても触れます。Pythonでキーボード入力を扱うための基礎知識を身につけたい方は、ぜひ本記事を参考にしてみてください。
input()関数の基本的な使い方
Pythonでキーボード入力を受け取るには、input()
関数を使います。input()
は組み込み関数で、ユーザーからのキーボード入力を文字列として受け取ります。name = input("Enter your name: ") print("Hello, " + name)
実行結果:Enter your name: Alice Hello, Alice
このように、input()
関数の引数にはプロンプト(入力を促すメッセージ)を指定できます。ユーザーが入力した値は、常に文字列型(str
)として返されます。
ここで注意したいのが、Python2とPython3での違いです。Python2ではraw_input()
関数を使ってキーボード入力を受け取ります。Python2のinput()
関数は、入力された値を式として評価してしまうため、セキュリティ上の理由から使用が推奨されていません。
Python2を使っている方は、
raw_input()
を使うようにしましょう。Python3ではinput()
関数がraw_input()
の代わりになりました。
数値の入力を受け取る
input()
関数で受け取った値は、常に文字列型になります。そのため、数値として扱いたい場合は、int()
やfloat()
などを使って型変換する必要があります。age = input("Enter your age: ") age = int(age) print("Your age is", age)
実行結果:Enter your age: 25 Your age is 25
ここでは、input()
で受け取った年齢をint()
で整数型に変換しています。こうすることで、数値として扱うことができます。
ただし、ユーザーが数値以外の値を入力した場合、ValueError
が発生してしまいます。エラーを防ぐためには、例外処理を行うのが一般的です。try: age = int(input("Enter your age: ")) print("Your age is", age) except ValueError: print("Invalid input. Please enter a number.")
このように、try
とexcept
を使って例外処理を行うことで、ユーザーが数値以外を入力した場合でもエラーを回避できます。
複数の値を入力する
input()
関数を使って、複数の値をまとめて入力することもできます。例えば、以下のようにカンマ区切りで値を入力し、split()
メソッドで分割するという方法があります。x, y = input("Enter two numbers (comma-separated): ").split(",") x = int(x) y = int(y) print("x =", x) print("y =", y)
実行結果:Enter two numbers (comma-separated): 10,20 x = 10 y = 20
split(",")
とすることで、入力された文字列をカンマで分割し、それぞれの値を変数に代入しています。ここでも、必要に応じてint()
などで型変換を行います。
ただし、この方法では入力される値の数が予め決まっている必要があります。可変長の入力を受け取りたい場合は、以下のようにループを使う方法があります。numbers = [] while True: inp = input("Enter a number (or press Enter to finish): ") if inp == "": break numbers.append(int(inp)) print("You entered:", numbers)
実行結果:Enter a number (or press Enter to finish): 10 Enter a number (or press Enter to finish): 20 Enter a number (or press Enter to finish): 30 Enter a number (or press Enter to finish): You entered: [10, 20, 30]
ここでは、空文字が入力されるまでwhile
ループを回し、入力された値をnumbers
リストに追加しています。こうすることで、任意の数の値を入力できるようになります。
キー入力を検知する
input()
関数は、ユーザーが入力するまでプログラムをブロックします。つまり、input()
が呼ばれた時点で、次の行に進むまでプログラムが一時停止するのです。
しかし、特定のキーが押されたかどうかを判定したい場合や、キーの押下や離脱のイベントをフックしたい場合には、input()
では実現が難しくなります。そんな時は、keyboard
やpynput
などのサードパーティ製ライブラリを使うのがおすすめです。import keyboard while True: if keyboard.is_pressed("q"): print("q key pressed") break
この例では、keyboard
ライブラリを使ってq
キーが押されたかどうかを判定しています。q
キーが押されるまでループを回し続け、押された時点でループを抜けるという処理になっています。
keyboard
ライブラリを使えば、グローバルホットキーを設定することもできます。つまり、他のアプリケーションがアクティブな状態でも、特定のキー操作でプログラムを制御できるようになるのです。
keyboard
やpynput
などのライブラリを使えば、キー入力に関するさまざまな処理を柔軟に行えます。目的に応じて適切なライブラリを選択しましょう。
標準入力から読み込む
これまで見てきたinput()
関数は対話的なキーボード入力を想定したものでしたが、標準入力からデータを読み込むこともできます。標準入力からの読み込みには、sys
モジュールのstdin
を使います。import sys for line in sys.stdin: print(line)
この例では、標準入力から1行ずつデータを読み込み、そのまま出力しています。標準入力は、キーボードからの入力だけでなく、パイプやリダイレクトを使ったデータの受け渡しにも使えます。
例えば、以下のようにファイルの内容を標準入力に渡すことができます。$ cat data.txt | python script.py
こうすることで、script.py
の中ではsys.stdin
を使ってファイルの内容を1行ずつ読み込むことができます。
標準入力からの読み込みは、対話的な入力よりもプログラムの自動化に向いています。複数のプログラムをパイプでつないで処理を行う際などに重宝するでしょう。
まとめ
本記事では、Pythonでキーボード入力を受け取る方法について詳しく解説しました。input()
関数を使えば、簡単にユーザーからの入力を受け取ることができます。また、数値の入力を受け取る方法や、複数の値を入力する方法などについても見てきました。
input()
以外にも、keyboard
やpynput
などのライブラリを使ってキー入力を検知したり、sys.stdin
を使って標準入力から読み込んだりする方法があることも確認しました。
Pythonでキーボード入力を扱う際は、以下の点に注意しましょう。
input()
は常に文字列を返すため、数値として扱いたい場合は型変換が必要- Python2では
raw_input()
を使う input()
はユーザーが入力するまでプログラムをブロックする- 特殊なキー入力を検知したい場合は、サードパーティ製ライブラリを使う
- 標準入力からの読み込みには
sys.stdin
を使う
Pythonでのキーボード入力は、アプリケーションを作る上で欠かせない機能です。ユーザーとのインタラクションを考えながら、適切な方法を選択していきましょう。 方法 概要 input()
ユーザーからの入力を文字列として受け取る int(input())
数値の入力を受け取る split()
複数の値を入力する keyboard
ライブラリ キー入力を検知する sys.stdin
標準入力から読み込む
参考になるリンクをいくつか紹介しておきます。
- Python input() Function (w3schools.com)
- How to Read User Input From the Keyboard in Python (realpython.com)
- Pythonでキーボード入力を受け取る方法 (atmarkit.co.jp)
本記事が、Pythonでのキーボード入力について理解を深める一助となれば幸いです。