では今回は、「間違えたときに再入力させるバージョン」として、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 さん。
🔍 ステップ解説
while True:
→ 永遠に繰り返すループを作る(breakで抜けるまで続く)。- ユーザー名・パスワードを
input()で取得。 ifで両方が一致しているかチェック。- 一致していたら成功メッセージを出して、
breakでループ終了。 - 一致していなければ
elseでエラーメッセージを出して再入力。
- 一致していたら成功メッセージを出して、
\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
🔍 ステップ解説
while True:で無限ループを作成。isdigit()で「数字だけか?」をチェック。- 数字でなければ
continue→ ループの最初に戻る。
- 数字でなければ
int()で数値に変換。- 範囲(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
ラーメンを選びました。
🔍 ステップ解説
while Trueでメニュー選択を繰り返す。- 入力が
"1","2","3"のいずれかならbreak。 - それ以外のときは
else:の中でエラーメッセージを表示して再入力。
💡 ポイント
input()の値は文字列なので、数字と比較する場合は"1"のように書く。breakとcontinueをうまく使うとユーザーフレンドリーなプログラムになる。
応用アイデア
| 改良案 | 内容 |
|---|---|
| ✅ 入力回数を制限する | 3回間違えたら「終了」する処理(count変数で管理) |
| ✅ メッセージをやさしくする | f文字列でユーザー名を入れるなど |
| ✅ エラーの種類を分ける | 「未入力」「文字」「範囲外」でメッセージを変える |
| ✅ GUI化 | tkinter や PySimpleGUI でウィンドウ上で再入力フォームにする |
まとめ
while True:で「正しい入力が来るまで続ける」構造を作る。break→ ループ終了continue→ 入力ミス時に再入力へ戻る- 組み合わせると、実際のアプリのような動きが実現できる。
