Python | 「ユーザーの入力(input)」と if / else を組み合わせた小さな実践アプリ

Python
スポンサーリンク

では今回は、「間違えたときに再入力させるバージョン」として、
while ループ+if / else を組み合わせた実践例をやさしく説明します。


目標

ユーザーが入力を間違えたら、
「もう一度入力してください」と表示して 再入力を促す プログラムを作ります。


実践例①:ログイン再入力アプリ

💻 コード

# 正しいIDとパスワード
correct_user = "admin"
correct_pw = "1234"

while True:  # 無限ループ開始
    user = input("ユーザー名を入力してください:")
    pw = input("パスワードを入力してください:")

    if user == correct_user and pw == correct_pw:
        print("ログイン成功!ようこそ", user, "さん。")
        break  # ループを抜ける
    else:
        print("ユーザー名またはパスワードが違います。もう一度入力してください。\n")
Python

▶️ 実行例

ユーザー名を入力してください:admin
パスワードを入力してください:9999
ユーザー名またはパスワードが違います。もう一度入力してください。

ユーザー名を入力してください:admin
パスワードを入力してください:1234
ログイン成功!ようこそ admin さん。

🔍 ステップ解説

  1. while True:
    → 永遠に繰り返すループを作る(break で抜けるまで続く)。
  2. ユーザー名・パスワードを input() で取得。
  3. if で両方が一致しているかチェック。
    • 一致していたら成功メッセージを出して、break でループ終了。
    • 一致していなければ else でエラーメッセージを出して再入力。
  4. \n は改行。見やすくするための工夫。

💡 ポイント

  • 「正しい入力が来たら break」という形が、再入力処理の基本形。
  • 条件が満たされるまで続くように書くと、プログラムが柔軟になります。

実践例②:点数入力(0〜100 以外は再入力)

💻 コード

while True:
    score = input("点数を入力してください(0〜100):")

    # 入力が数字かどうかチェック
    if not score.isdigit():
        print("数字を入力してください。\n")
        continue  # ループの先頭に戻る

    score = int(score)  # 整数に変換

    # 範囲チェック
    if 0 <= score <= 100:
        print("入力を受け付けました。点数:", score)
        break  # 正常入力なら終了
    else:
        print("0〜100の範囲で入力してください。\n")
Python

▶️ 実行例

点数を入力してください(0〜100):abc
数字を入力してください。

点数を入力してください(0〜100):150
0〜100の範囲で入力してください。

点数を入力してください(0〜100):85
入力を受け付けました。点数: 85

🔍 ステップ解説

  1. while True: で無限ループを作成。
  2. isdigit() で「数字だけか?」をチェック。
    • 数字でなければ continue → ループの最初に戻る。
  3. int() で数値に変換。
  4. 範囲(0〜100)を if 0 <= score <= 100: で確認。
    • 範囲外なら再入力を促す。
    • 範囲内なら受け付けて break

💡 ポイント

  • continue:今のループをスキップして、最初に戻る。
  • break:完全にループを抜ける。
  • この2つで「再入力制御」がきれいに書けます。

実践例③:メニュー選択アプリ(選択ミスで再入力)

💻 コード

while True:
    print("=== メニュー ===")
    print("1: カレー")
    print("2: ラーメン")
    print("3: サンドイッチ")

    choice = input("番号を選んでください:")

    if choice == "1":
        print("カレーを選びました。\n")
        break
    elif choice == "2":
        print("ラーメンを選びました。\n")
        break
    elif choice == "3":
        print("サンドイッチを選びました。\n")
        break
    else:
        print("⚠️ 無効な入力です。1〜3の番号を選んでください。\n")
Python

▶️ 実行例

=== メニュー ===
1: カレー
2: ラーメン
3: サンドイッチ
番号を選んでください:5
⚠️ 無効な入力です。1〜3の番号を選んでください。

=== メニュー ===
1: カレー
2: ラーメン
3: サンドイッチ
番号を選んでください:2
ラーメンを選びました。

🔍 ステップ解説

  1. while True でメニュー選択を繰り返す。
  2. 入力が "1", "2", "3" のいずれかなら break
  3. それ以外のときは else: の中でエラーメッセージを表示して再入力。

💡 ポイント

  • input() の値は文字列なので、数字と比較する場合は "1" のように書く。
  • breakcontinue をうまく使うとユーザーフレンドリーなプログラムになる。

応用アイデア

改良案内容
✅ 入力回数を制限する3回間違えたら「終了」する処理(count変数で管理)
✅ メッセージをやさしくするf文字列でユーザー名を入れるなど
✅ エラーの種類を分ける「未入力」「文字」「範囲外」でメッセージを変える
✅ GUI化tkinterPySimpleGUI でウィンドウ上で再入力フォームにする

まとめ

  • while True: で「正しい入力が来るまで続ける」構造を作る。
  • break → ループ終了
  • continue → 入力ミス時に再入力へ戻る
  • 組み合わせると、実際のアプリのような動きが実現できる。
タイトルとURLをコピーしました