【Python】キーボードからの入力
Pythonでのキーボード入力の概要
Pythonでは、キーボードからの入力を受け取る際に主にinput()
関数を使用します。この関数はユーザーからの入力を文字列として取得します。プログラムの動的な操作やインタラクティブなアプリケーションの構築において非常に役立ちます。
基本的なキーボード入力の使い方
input()
関数は、標準入力からデータを取得し、それを文字列として返します。簡単な例を以下に示します。
# 名前を尋ねる
name = input("あなたの名前は何ですか?: ")
print(f"こんにちは、{name}さん!")
このコードは、ユーザーに「あなたの名前は何ですか?」と尋ね、入力された名前をname
変数に格納します。
入力値の型変換
デフォルトではinput()
関数は文字列を返しますが、数値計算や条件分岐で使用するために型変換が必要な場合があります。
# 数値を入力して加算する
num1 = int(input("1つ目の数値を入力してください: "))
num2 = int(input("2つ目の数値を入力してください: "))
print(f"合計は {num1 + num2} です。")
この例では、int()
を使用して文字列を整数に変換しています。同様に、浮動小数点数に変換する場合はfloat()
を使用します。
入力値の検証
ユーザーから正しい形式の入力を確保するために、入力値の検証を行うことが重要です。
# 数値かどうかを確認する
while True:
value = input("整数を入力してください: ")
if value.isdigit():
print(f"入力された数値: {int(value)}")
break
else:
print("無効な入力です。もう一度試してください。")
このコードは、ユーザーが正しい形式の整数を入力するまで繰り返しプロンプトを表示します。
複数の入力を受け取る方法
複数の値を1行で入力させたい場合、split()
メソッドを使用することができます。
# 複数の数値を入力して合計を求める
numbers = input("スペース区切りで数値を入力してください: ").split()
total = sum(map(int, numbers))
print(f"合計は {total} です。")
この例では、ユーザーが入力したスペース区切りの文字列をリストに変換し、それぞれを整数に変換して合計を計算しています。
応用的な例
以下は、キーボード入力を利用した少し複雑な例です。
# クイズプログラム
questions = {
"Pythonで文字列を入力するにはどの関数を使用しますか?: ": "input",
"Pythonで整数に変換するにはどの関数を使用しますか?: ": "int",
}
score = 0
for question, correct_answer in questions.items():
answer = input(question).strip()
if answer.lower() == correct_answer:
print("正解!")
score += 1
else:
print(f"不正解。正しい答えは '{correct_answer}' です。")
print(f"あなたのスコアは {score}/{len(questions)} です。")
このコードは、インタラクティブなクイズプログラムを作成する方法を示しています。
よくあるエラーと対処法
キーボード入力を扱う際によく発生するエラーとその対処法を以下に示します。
- ValueError: 型変換時に無効な入力を渡した場合に発生します。例:
int("abc")
- EOFError: 入力が終了している場合に発生します。特にスクリプトが自動的に標準入力にアクセスしようとする場合に注意が必要です。
これらのエラーはtry-except
ブロックを使用することで回避できます。
# エラー処理の例
try:
num = int(input("数値を入力してください: "))
print(f"入力された数値: {num}")
except ValueError:
print("無効な数値です。数値を入力してください。")