ここでは、「ループ + if + 関数化」を組み合わせて、再利用しやすい形に整理したサンプルを作りましょう。
目標
ユーザーから入力を受け取り、
- 正しい形式でなければ再入力させる(ループ)
- 条件分岐で判定(if文)
- 処理を関数としてまとめる(関数化)
→ 「年齢判定アプリ」を例にします。
完成コード例
def get_age():
"""年齢を入力させて、正しい整数が入力されるまで繰り返す"""
while True:
age_str = input("あなたの年齢を入力してください:")
if age_str.isdigit(): # 数字だけで構成されているか確認
return int(age_str)
else:
print("❌ 数字で入力してください。もう一度お願いします。")
def judge_age(age):
"""年齢に応じてメッセージを返す"""
if age < 13:
return "子どもですね!"
elif age < 20:
return "ティーンですね!"
elif age < 65:
return "大人ですね!"
else:
return "シニアの方ですね!"
def main():
"""メイン処理"""
print("=== 年齢判定アプリ ===")
age = get_age() # 入力取得(ループ付き)
message = judge_age(age) # 判定関数呼び出し
print(f"結果:{message}")
# 実行
if __name__ == "__main__":
main()
Python実行例
=== 年齢判定アプリ ===
あなたの年齢を入力してください:abc
❌ 数字で入力してください。もう一度お願いします。
あなたの年齢を入力してください:20
結果:大人ですね!
解説(ステップごとに)
| ステップ | 内容 | ポイント |
|---|---|---|
① get_age() | 年齢を入力。数字以外なら再入力を促す | while True: + isdigit() がポイント |
② judge_age() | 入力された年齢を条件分岐で判定 | if / elif / else の使い方を整理 |
③ main() | 全体の流れを整理 | 処理の見通しが良くなり、再利用もしやすい |
④ if __name__ == "__main__": | スクリプトとして実行時のみ main() を動かす | 他のスクリプトからも呼び出しやすい構造 |
応用課題
- 成績判定バージョン
- 点数(0〜100)を入力
- 範囲外の値なら再入力
- A〜D評価を表示
- 再利用の練習
get_number(prompt, min_value, max_value)のように関数化して
どんな入力チェックにも使えるようにしてみましょう。
