Pythonのinput()関数:キーボードからのユーザー入力を受け取る方法

コマンドラインツールや対話型のスクリプトを作成する際、プログラムの実行中にユーザーからの入力を受け取りたい場面があります。

Pythonでは、組み込み関数の input() を使用することで、キーボードからの標準入力を簡単に取得できます。

この記事では、input() 関数の基本的な使い方から、数値としての扱い、そして while ループと組み合わせた対話型処理の実装方法について解説します。

目次

input() 関数の基本

input() 関数が呼び出されると、プログラムの処理は一時停止し、ユーザーがキーボードから文字を入力して Enterキー を押すのを待ちます。Enterキーが押されると、入力された内容は**文字列(str)**としてプログラムに返されます。

構文:

変数 = input("入力を促すメッセージ(プロンプト)")

引数に文字列を渡すと、入力待ちになる前にそのメッセージが表示されます。

具体的な使用例:ユーザー登録

ユーザーに名前と居住地を尋ねるプログラムを作成します。

print("--- ユーザー登録 ---")

# 名前を入力させる(プロンプトを表示)
user_name = input("名前を入力してください: ")

# 居住地を入力させる
location = input("居住地を入力してください: ")

print("--------------------")
print(f"登録完了: {user_name} ({location})")

実行結果(例):

--- ユーザー登録 ---
名前を入力してください: Tanaka
居住地を入力してください: Tokyo
--------------------
登録完了: Tanaka (Tokyo)

注意点:戻り値は常に「文字列」

input() 関数で取得したデータは、たとえ数字を入力したとしても、すべて**文字列型(str)**として扱われます。

そのため、入力された数値を使って計算を行いたい場合は、int()float() を使って型変換を行う必要があります。

# 数値の入力
price_str = input("商品の価格を入力してください: ")

# 文字列のままでは計算できないため、整数に変換する
try:
    price = int(price_str)
    tax_included = int(price * 1.1)
    print(f"税込価格: {tax_included}円")
except ValueError:
    print("エラー: 整数を入力してください。")

実行結果(例):

商品の価格を入力してください: 1000
税込価格: 1100円

もし int() 変換を行わずに price_str * 1.1 を計算しようとすると、TypeError が発生します。

繰り返し入力を受け取る(whileループ)

input() 関数を while ループの中に記述することで、特定の終了コマンドが入力されるまで、対話的に処理を続けることができます。

一般的な実装パターン

print("コマンドを入力してください。('exit' で終了)")

while True:
    # 入力を受け取る
    command = input(">> ")
    
    # 終了条件のチェック
    if command == "exit":
        print("プログラムを終了します。")
        break
    
    # 入力内容に応じた処理
    if command == "date":
        print("2025-11-27")
    elif command == "hello":
        print("こんにちは!")
    else:
        print(f"不明なコマンドです: {command}")

実行結果(例):

コマンドを入力してください。('exit' で終了)
>> hello
こんにちは!
>> date
2025-11-27
>> test
不明なコマンドです: test
>> exit
プログラムを終了します。

代入式(セイウチ演算子)を使った短縮記法

Python 3.8以降では、代入式 :=(セイウチ演算子)を使用することで、入力の受け取りと終了判定を1行で記述できます。

print("メッセージを入力してください。('quit' で終了)")

# inputの結果を msg に代入し、同時にそれが 'quit' でないかを判定する
while (msg := input("Input: ")) != "quit":
    print(f"受信メッセージ: {msg}")

print("終了しました。")

この書き方をすると、while ループの前に一度 input を書き、ループ内でもう一度 input を書くといった重複を避けることができ、コードが簡潔になります。

まとめ

  • input("メッセージ") でユーザーからのキーボード入力を取得します。
  • 戻り値は常に文字列です。数値として扱う場合は int() などで変換が必要です。
  • while ループと組み合わせることで、終了コマンドが入力されるまで処理を繰り返す対話型ツールを作成できます。
  • 代入式 := を使うと、ループ条件式の中で入力と判定を同時に行えます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次