●Pythonのinput関数とは?
プログラミングを始めたばかりの頃、コンピュータにデータを入力する方法について悩んだことはありませんか?
Pythonには、ユーザーからの入力を簡単に受け取ることができるinput関数が用意されています。
input関数を使えば、プログラムの実行中にユーザーにデータを入力してもらい、そのデータをプログラム内で利用することができます。
初心者の方にとっては、input関数の使い方を理解することがPythonプログラミングの第一歩と言えるでしょう。
○input関数の基本的な使い方
input関数の基本的な使い方は非常にシンプルです。
下記のように関数を呼び出すだけで、ユーザーからの入力を受け取ることができます。
user_input = input("メッセージを入力してください: ")
print("入力されたメッセージは:", user_input)
実行結果
メッセージを入力してください: Hello, World!
入力されたメッセージは: Hello, World!
このコードでは、input関数の引数に表示したいメッセージを指定しています。
ユーザーが入力した値は、user_input変数に文字列として格納されます。
print関数を使って、入力された値を表示することができます。
○サンプルコード1:基本的な文字列入力
下記のサンプルコードでは、ユーザーに名前を入力してもらい、挨拶を表示するプログラムを作成しています。
name = input("お名前を入力してください: ")
print("こんにちは、" + name + "さん!")
実行結果
お名前を入力してください: 山田太郎
こんにちは、山田太郎さん!
ユーザーが名前を入力すると、input関数によってその値がname変数に格納されます。
その後、print関数で挨拶文とともに名前を表示しています。
このように、input関数を使うことで、プログラムとユーザーのインタラクションを実現できます。
●数値入力の取り扱い
input関数で受け取った値は、デフォルトでは文字列として扱われます。
しかし、数値を入力してもらう場合、そのまま計算に使用することはできません。
数値として扱うためには、型変換を行う必要があります。
○サンプルコード2:整数の入力方法
下記のサンプルコードでは、ユーザーに年齢を入力してもらい、来年の年齢を計算するプログラムを作成します。
age = int(input("現在の年齢を入力してください: "))
next_year_age = age + 1
print("来年のあなたの年齢は", next_year_age, "歳です。")
実行結果
現在の年齢を入力してください: 25
来年のあなたの年齢は 26 歳です。
ここでは、input関数で受け取った年齢をint関数で整数に変換しています。
これにより、数値として扱うことができ、来年の年齢を計算することができます。
○サンプルコード3:浮動小数点数の入力
整数だけでなく、小数点を含む浮動小数点数を入力する場合は、float関数を使用します。
height = float(input("身長をメートル単位で入力してください: "))
print("あなたの身長は", height, "メートルです。")
実行結果
身長をメートル単位で入力してください: 1.75
あなたの身長は 1.75 メートルです。
float関数を使うことで、ユーザーが入力した値を浮動小数点数として扱うことができます。
●文字列操作とinput関数
input関数で受け取った文字列に対して、様々な操作を行うことができます。
文字列のフォーマットを整えたり、特定の部分を抽出したりすることで、入力されたデータをプログラムで利用しやすくなります。
○サンプルコード4:文字列の整形
下記のサンプルコードでは、ユーザーに氏名を入力してもらい、姓と名に分割して表示するプログラムを作成します。
full_name = input("氏名を入力してください(例:山田太郎): ")
last_name, first_name = full_name.split()
print("姓:", last_name)
print("名:", first_name)
実行結果
氏名を入力してください(例:山田太郎): 鈴木花子
姓: 鈴木
名: 花子
ここでは、ユーザーが入力した氏名を、split関数を使って姓と名に分割しています。
split関数はデフォルトで空白文字を区切り文字として使用するため、姓と名の間にスペースを入れてもらう必要があります。
分割された姓と名は、それぞれ別の変数に格納され、print関数で表示されます。
○サンプルコード5:パスワード入力の隠蔽
input関数を使ってパスワードを入力する場合、入力内容が画面に表示されてしまうと、セキュリティ上の問題があります。
Pythonの標準ライブラリであるgetattrを使うことで、パスワードの入力を隠蔽することができます。
import getpass
username = input("ユーザー名を入力してください: ")
password = getpass.getpass("パスワードを入力してください: ")
print("ユーザー名:", username)
print("パスワード:", "*" * len(password))
実行結果
ユーザー名を入力してください: john_doe
パスワードを入力してください:
ユーザー名: john_doe
パスワード: ******
getpass.getpass関数を使うことで、パスワードの入力時に文字が画面に表示されなくなります。
また、print関数でパスワードを表示する際には、アスタリスク(*)を使って隠蔽しています。
●input関数を使ったアプリケーション例
前章では、input関数の基本的な使い方と、文字列や数値の入力方法について解説しました。
でも、実際にプログラミングをする上では、もっと実践的な例が知りたいですよね。
ここからは、input関数を使ったアプリケーション例をいくつか紹介していきます。
○サンプルコード6:単純なクイズアプリ
クイズアプリを作ってみましょう。
ユーザーに問題を表示し、回答を入力してもらいます。回答が正解かどうかを判定し、結果を表示します。
print("ようこそ、クイズアプリへ!")
print("問題:Pythonを開発したのは誰でしょう?")
answer = input("回答を入力してください: ")
if answer.lower() == "guido van rossum":
print("正解です!あなたはPythonマスターですね!")
else:
print("残念、不正解です。正解は「Guido van Rossum」でした。")
print("クイズアプリを終了します。ありがとうございました!")
実行結果
ようこそ、クイズアプリへ!
問題:Pythonを開発したのは誰でしょう?
回答を入力してください: guido van rossum
正解です!あなたはPythonマスターですね!
クイズアプリを終了します。ありがとうございました!
このコードでは、print関数で問題文を表示し、input関数で回答を受け取っています。
if文を使って、入力された回答が正解かどうかを判定し、結果に応じたメッセージを表示しています。
クイズアプリは、input関数を使ってユーザーとインタラクションを行う良い例です。
問題の内容を変えたり、複数の問題を出題したりすることで、より本格的なクイズアプリを作ることができるでしょう。
○サンプルコード7:ユーザーからのフィードバック収集
ユーザーからフィードバックを収集するプログラムを作成してみましょう。
ユーザーに質問を表示し、回答を入力してもらいます。
入力された回答は、後で分析するためにファイルに保存します。
print("フィードバックをお寄せいただき、ありがとうございます。")
name = input("お名前を入力してください: ")
feedback = input("ご意見・ご感想をお聞かせください: ")
with open("feedback.txt", "a") as file:
file.write(f"名前: {name}\n")
file.write(f"フィードバック: {feedback}\n")
file.write("------------------------\n")
print("フィードバックが保存されました。ご協力ありがとうございました!")
実行結果
フィードバックをお寄せいただき、ありがとうございます。
お名前を入力してください: 山田太郎
ご意見・ご感想をお聞かせください: サービスはとても使いやすく、満足しています。ただ、もう少し機能があると嬉しいです。
フィードバックが保存されました。ご協力ありがとうございました!
このコードでは、input関数を使ってユーザーの名前とフィードバックを受け取っています。
受け取ったデータは、with文を使ってファイルに書き込んでいます。
ファイルへの書き込みには、”a”モードを使用して、既存のファイルに追記しています。
フィードバック収集プログラムは、ユーザーの声を聞くための重要なツールです。
収集したフィードバックを分析することで、サービスや製品の改善につなげることができるでしょう。
●エラーハンドリングとinput関数
ユーザーからの入力を受け取る際、予期しない入力があった場合にエラーが発生することがあります。
エラーを適切に処理することで、プログラムの安定性を高めることができます。
○サンプルコード8:入力値の検証
ユーザーに数値の入力を求める場合、入力された値が実際に数値であるかどうかを検証する必要があります。
while True:
user_input = input("整数を入力してください: ")
try:
number = int(user_input)
print(f"入力された数値は {number} です。")
break
except ValueError:
print("整数を入力してください!")
実行結果
整数を入力してください: 10
入力された数値は 10 です。
整数を入力してください: abc
整数を入力してください!
整数を入力してください: 3.14
整数を入力してください!
整数を入力してください: 42
入力された数値は 42 です。
このコードでは、while文を使って、整数が入力されるまで繰り返し入力を求めています。
try-except文を使って、入力された値をint関数で整数に変換しようとしています。
変換が成功した場合は、入力された数値を表示してループを抜けます。
変換に失敗した場合は、ValueErrorが発生するので、except文で処理し、エラーメッセージを表示します。
○サンプルコード9:不正な入力への対処
ユーザーからの入力が、期待する形式と異なる場合があります。
そのような場合にも、適切にエラーを処理し、ユーザーに再入力を促す必要があります。
while True:
user_input = input("y/n で入力してください: ")
if user_input.lower() == "y" or user_input.lower() == "n":
print(f"入力されたのは {user_input} です。")
break
else:
print("y または n を入力してください!")
実行結果
y/n で入力してください: yes
y または n を入力してください!
y/n で入力してください: N
入力されたのは N です。
このコードでは、ユーザーに “y” または “n” の入力を求めています。
入力された値を小文字に変換し、”y” または “n” であるかどうかを判定しています。
期待する値が入力された場合は、入力内容を表示してループを抜けます。
それ以外の場合は、再入力を促すメッセージを表示します。
エラーハンドリングは、プログラムの安定性と使い勝手を向上させるために欠かせません。
想定外の入力があっても、適切にエラーを処理することで、プログラムを強固なものにすることができるでしょう。
●複雑なユーザー入力の処理
これまでは、単一の値を入力する例を見てきましたが、複数の値を同時に入力したり、リストや辞書などの複雑なデータ構造を入力したりする場面もあります。
○サンプルコード10:リストとしての入力の取得
ユーザーに複数の値を入力してもらい、それらの値をリストとして取得する方法を見ていきましょう。
print("好きなフルーツを入力してください。終了するには 'done' と入力してください。")
fruits = []
while True:
fruit = input("フルーツを追加: ")
if fruit == "done":
break
fruits.append(fruit)
print("あなたの好きなフルーツは:")
for fruit in fruits:
print(fruit)
実行結果
好きなフルーツを入力してください。終了するには 'done' と入力してください。
フルーツを追加: りんご
フルーツを追加: バナナ
フルーツを追加: オレンジ
フルーツを追加: done
あなたの好きなフルーツは:
りんご
バナナ
オレンジ
このコードでは、while文を使って、ユーザーが “done” と入力するまで繰り返しフルーツの名前を入力してもらっています。
入力された値は、fruitsリストに追加されます。入力が終了したら、for文を使ってリストの内容を表示しています。
○サンプルコード11:複数のデータ型の同時処理
ユーザーから異なるデータ型の値を同時に入力してもらうこともあるでしょう。
例えば、ユーザーの名前と年齢を入力してもらう場合です。
print("ユーザー情報を入力してください。")
name = input("名前: ")
while True:
try:
age = int(input("年齢: "))
break
except ValueError:
print("年齢は整数で入力してください!")
print(f"名前: {name}")
print(f"年齢: {age}")
実行結果
ユーザー情報を入力してください。
名前: 山田太郎
年齢: 25歳
年齢は整数で入力してください!
年齢: 25
名前: 山田太郎
年齢: 25
このコードでは、ユーザーの名前をinput関数で受け取っています。
年齢の入力には、前述の例と同様に、while文とtry-except文を使って、整数が入力されるまで繰り返し入力を求めています。
最後に、入力された名前と年齢を表示しています。
まとめ
Pythonのinput関数は、プログラミングを学ぶ上で欠かせない機能の一つであり、ユーザーとのインタラクションを通じてプログラムに命を吹き込むことができます。
基本的な使い方から応用的なテクニックまで、幅広い場面で活躍し、エラーハンドリングや外部モジュールとの組み合わせにより、さらに柔軟で高度な入力処理を実現できます。
これからもPythonの他の機能や新しいプログラミング言語に挑戦し、楽しみながらプログラミングを学んでいきましょう。
以上で、本記事を締めさせていただきます。