input()関数でユーザー入力を取り込もう
Pythonでプログラムを書いていると、ユーザーからの入力を受け取り、処理に反映させたい場面は多々あります。例えば、数値を打ち込んでもらって計算処理を行ったり、文字列を入力してもらい、その内容を解析したりなど、ユーザーとの対話的なやりとりはあらゆるプログラムで重要です。そんなときに役立つのが、input()
関数です。本記事では、input()
関数を使った基本的なユーザー入力の受け取り方や、文字列以外の型への変換方法、実践的な活用法について初心者向けにわかりやすく解説します。
1. input()関数の基本
Pythonでユーザーからの入力を受け取る際には、input()
関数を使います。input()
関数を呼び出すと、プログラムの実行が一時的に停止し、ユーザーが何か文字を入力してEnterキーを押すまで待機します。その後、入力された内容を文字列として返してくれます。以下の例を見てみましょう。
name = input("あなたの名前を入力してください: ")
print("こんにちは、" + name + "さん!")
上記のコードを実行すると、まずコンソール上に「あなたの名前を入力してください:
」というメッセージが表示されます。そこでユーザーが名前を入力してEnterキーを押すと、input()
関数がその名前を文字列として受け取り、変数name
に格納します。最後にprint()
で「こんにちは、◯◯さん!」と表示します。
このように、input()
関数の戻り値は常に文字列です。そのため、もし数値を扱いたい場合は、文字列から数値への変換が必要となります。
2. 数値を入力する場合の注意
ユーザーに数値を入力してもらい、四則演算や統計処理を行いたいこともあるでしょう。例えば「商品の金額を入力してもらい、その合計を求めたい」というシチュエーションを考えます。input()
関数は先ほどの例のとおり文字列を返すので、そのままの状態では数値として計算できません。そこでint()
やfloat()
関数を使い、文字列を整数や浮動小数点数に変換します。
price = input("商品の金額を入力してください: ")
price_int = int(price) # 文字列を整数に変換
print("入力した金額は", price_int, "円です。")
上記では、input()
関数で受け取った文字列price
をint()
を使って整数に変換し、price_int
という変数に代入しています。こうすることで、演算や比較などの数値処理が可能になります。小数を扱う場合はfloat()
を使いましょう。
3. エラーへの対処法 (例外処理)
ただし、ユーザーが想定外の文字列を入力したときには、int()
やfloat()
がエラーを発生させる可能性があります。例えば、数字でない文字列を入力された場合はValueError
という例外が起こります。実際のサービスやアプリケーションでは、ユーザーが予期せぬ入力をすることは珍しくありません。このようなエラーに対処するためには、try-except
構文を使います。
try:
user_input = input("数字を入力してください: ")
number = int(user_input)
print("数値として認識しました:", number)
except ValueError:
print("エラー: 数字として読み取れませんでした。")
上記の例では、int()
へ正しく変換できない文字列が入力された場合はexcept ValueError:
以下の処理が呼び出され、プログラムが強制終了されるのを防ぎつつ、ユーザーにエラーメッセージを表示しています。初心者のうちはエラーが出ると慌ててしまいがちですが、例外処理の基本を押さえておくと、より安全で使いやすいプログラムを作ることができるでしょう。
4. 文字列を複数行にわたって入力するには
input()
関数は基本的に1行単位で入力を受け付けます。しかし、長いテキストや複数行の文章を入力したい場合もあるかもしれません。その場合は、何回かinput()
関数を呼び出して複数の行を取得したり、または別の手段(例えばファイル入力など)を利用するという方法があります。
シンプルな例としては、複数行にわたって入力を受け取り、空行が入力されたら終わりにするといった実装が考えられます。
lines = []
print("複数行入力モードです。終了するには空行を入力してください。")
while True:
line = input()
if line == "":
break
lines.append(line)
print("入力内容:", lines)
このサンプルでは、ユーザーが空行を入力するまでwhile
ループが回り、ユーザーが打ち込んだ文字列がリストlines
に順次追加されます。最後に入力された内容をまとめて表示する流れです。
5. 実践例: ユーザーから複数のデータを受け取り計算する
ここでは、簡単な実践例として、ユーザーに複数の数値を入力してもらい、それらの合計と平均値を求めるプログラムを作ってみましょう。入力方法としては「カンマ区切り」で数値を入力してもらい、それをリストに変換してから計算します。例えば「10,20,30」のように入力してもらうことを想定します。
user_input = input("カンマ区切りで数値を入力してください (例: 10,20,30): ")
# 文字列をカンマで分割
str_numbers = user_input.split(",")
numbers = []
for s in str_numbers:
try:
num = float(s) # 小数を含む場合も想定してfloatで変換
numbers.append(num)
except ValueError:
print(f"エラー: '{s}' は数値として認識できませんでした。")
exit() # 処理を終了する例
if len(numbers) == 0:
print("有効な数値が入力されませんでした。")
else:
total = sum(numbers)
average = total / len(numbers)
print(f"合計: {total}, 平均: {average}")
このプログラムのポイントは、input()
で受け取った文字列をカンマ(,
)で分割し、リストに変換してから数値化している点です。float()
による変換ができない場合はエラーメッセージを出し、exit()
でプログラムを終わらせるようにしています。実際の運用環境では、エラー時に再入力を促すなどの対応をすることも多いでしょう。
6. まとめと次のステップ
本記事では、Pythonのinput()
関数を使ってユーザー入力を取り込み、文字列を加工したり数値変換を行う基本的な方法を解説しました。これらのテクニックを組み合わせると、ユーザーと対話的にやりとりをするアプリケーションを開発できます。ポイントを振り返ると、以下のとおりです。
input()
関数は文字列を返す- 数値を扱う場合は
int()
やfloat()
で変換 - エラー(例外)処理を行っておくと、ユーザーの誤入力への耐性が高まる
- 複数行入力やカンマ区切りなど、工夫次第でさまざまな形式の入力を扱える
今後は、ユーザー入力を行った結果をファイルに書き込んだり、外部APIやデータベースに送信したりと、さらに発展的な活用方法へとステップアップしていくことができます。また、GUIアプリケーション(グラフィカルユーザーインターフェース)を作成したり、Webアプリケーションのフォームからの入力を処理する場合でも、「ユーザーが入力したデータをプログラムに活かす」という根本的な考え方は同じです。まずはinput()
の仕組みをしっかりマスターし、数値変換やエラー処理などの基本を押さえておきましょう。
初心者のうちは、実際にスクリプトを何度も書いて動かしながら学ぶことをおすすめします。自分でコードを書いてみると、想定外の入力やエラーへの対処がより具体的に理解できるはずです。input()
を使いこなして、ぜひユーザーとの対話を楽しめるプログラムを作ってみてください。