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

Python
スポンサーリンク

ifの中にifを入れる「ネスト構造」実践アプリ

ここでは、if文の「中にifを入れる」= ネスト構造(入れ子構造)を使った、
実践的な 発展練習アプリ10問 を紹介します。

各問題には:
✅ 問題文
✅ 解答例コード
✅ ステップごとの詳細解説
をセットにしています。


✅ Q1:ログイン認証+アクセス権チェック

問題

  • ユーザー名 "admin" とパスワード "1234" の組み合わせでログイン成功。
  • 成功した場合のみ、"管理者権限を表示しますか?(yes/no)" を聞く。
  • "yes" と答えたら「管理者権限:ON」と表示。

💡 解答例

user = input("ユーザー名: ")
pwd = input("パスワード: ")

if user == "admin" and pwd == "1234":
    print("ログイン成功")
    ans = input("管理者権限を表示しますか?(yes/no): ")
    if ans == "yes":
        print("管理者権限:ON")
    else:
        print("権限表示をスキップしました")
else:
    print("認証失敗")
Python

🪜 ステップ解説

  1. if → ログイン成功条件をチェック。
  2. 成功した場合のみ「内側のif」に進む。
  3. ネスト構造により、「ログイン後のみの動作」を安全に限定できる。

✅ Q2:点数+欠席数による合否判定

問題

  • 点数が60以上 → 合格候補
     → ただし欠席回数が3回以上なら「欠席による不合格」。
  • 点数が60未満 → 「点数不足による不合格」

💡 解答例

score = int(input("点数: "))
absent = int(input("欠席回数: "))

if score >= 60:
    if absent >= 3:
        print("欠席による不合格")
    else:
        print("合格")
else:
    print("点数不足による不合格")
Python

🪜 ステップ解説

  1. 外側のifで「合格圏内」かどうかを判断。
  2. その内側で「欠席」による特別条件を判定。
  3. 条件を階層化することで、読みやすく整理できる。

✅ Q3:年齢と会員ランクによる料金判定

問題

  • 年齢が18歳未満 → 学生料金
     → 会員なら「500円」/非会員なら「800円」
  • 18歳以上 → 一般料金
     → 会員なら「1000円」/非会員なら「1500円」

💡 解答例

age = int(input("年齢: "))
member = input("会員ですか?(yes/no): ")

if age < 18:
    if member == "yes":
        print("料金:500円")
    else:
        print("料金:800円")
else:
    if member == "yes":
        print("料金:1000円")
    else:
        print("料金:1500円")
Python

🪜 ステップ解説

  1. 外側のifで「学生/一般」を分類。
  2. 内側のifで「会員/非会員」を再分岐。
  3. 「二段階判定」がわかりやすくなる構造。

✅ Q4:ネットショッピング送料計算

問題

  • 購入額が5000円以上 → 送料無料
  • 5000円未満 →
     → 会員なら「200円」
     → 非会員なら「500円」

💡 解答例

price = int(input("購入金額: "))
member = input("会員ですか?(yes/no): ")

if price >= 5000:
    print("送料無料です")
else:
    if member == "yes":
        print("送料200円です")
    else:
        print("送料500円です")
Python

🪜 ステップ解説

  1. 外側のifで「送料無料条件」を先に判定。
  2. それ以外の場合のみ、内側の条件で送料を分岐。
  3. ネストを使うとロジックを「上から下へ自然に」読める。

✅ Q5:学生証チェック+試験参加

問題

  • 「学生証がありますか?」 → yes の場合のみ次へ。
     → 「受験票がありますか?」 → yes → 「試験参加可能」
     → no → 「受験票を忘れています」
  • 学生証がない場合 → 「受験できません」

💡 解答例

id_card = input("学生証がありますか?(yes/no): ")

if id_card == "yes":
    ticket = input("受験票がありますか?(yes/no): ")
    if ticket == "yes":
        print("試験に参加できます")
    else:
        print("受験票を忘れています")
else:
    print("学生証がないため受験できません")
Python

🪜 ステップ解説

  1. 最初に学生証チェック。
  2. その中で受験票の有無を再確認。
  3. ネスト構造で「順序付きチェック」ができる。

✅ Q6:銀行ATM引き出し判定

問題

  • 残高が足りない → 「残高不足」
  • 残高が足りる場合:
     → 引き出し金額が10万円以上 → 「本人確認が必要」
     → それ以外 → 「引き出し成功」

💡 解答例

balance = int(input("残高: "))
withdraw = int(input("引き出し金額: "))

if balance < withdraw:
    print("残高不足です")
else:
    if withdraw >= 100000:
        print("本人確認が必要です")
    else:
        print("引き出し成功")
Python

🪜 ステップ解説

  1. 外側で「残高の有無」を判定。
  2. 内側で「金額制限」をチェック。
  3. このような二重条件は実務でも頻出。

✅ Q7:オンライン試験の参加条件

問題

  • ネット接続が "ok" かつ カメラが "ok" → 「受験可能」
     → ただし音声が "no" の場合 → 「音声なしで受験」
  • 接続 or カメラのいずれかが "no" → 「受験不可」

💡 解答例

net = input("ネット接続は良好ですか?(ok/no): ")
cam = input("カメラは動作していますか?(ok/no): ")
mic = input("マイクは動作していますか?(ok/no): ")

if net == "ok" and cam == "ok":
    if mic == "ok":
        print("受験可能です")
    else:
        print("音声なしで受験可能です")
else:
    print("受験不可です")
Python

🪜 ステップ解説

  1. 外側で「基本条件(ネット・カメラ)」を確認。
  2. 内側で「追加条件(マイク)」をチェック。
  3. 条件を2段構成に分けると分かりやすい。

✅ Q8:配送エリア+天候による遅延案内

問題

  • エリア "関東"
     → 天気 "雨" → 「1日遅延」
     → それ以外 → 「通常配送」
  • エリア "関東" 以外 → 「2〜3日かかります」

💡 解答例

area = input("配送エリア(関東/その他): ")
weather = input("天気(晴れ/雨): ")

if area == "関東":
    if weather == "雨":
        print("1日遅延します")
    else:
        print("通常配送です")
else:
    print("2〜3日かかります")
Python

🪜 ステップ解説

  1. 外側で地域条件を確認。
  2. 内側で天気による影響を分岐。
  3. 組み合わせを明確に整理できる。

✅ Q9:試験合格+特典条件

問題

  • 平均点が80以上 → 合格
     → さらに全科目90以上 → 「特待生合格」
  • 平均点が80未満 → 「不合格」

💡 解答例

math = int(input("数学: "))
eng = int(input("英語: "))
sci = int(input("理科: "))

avg = (math + eng + sci) / 3

if avg >= 80:
    if math >= 90 and eng >= 90 and sci >= 90:
        print("特待生合格!")
    else:
        print("合格")
else:
    print("不合格")
Python

🪜 ステップ解説

  1. 外側で「合格基準(平均80)」を判定。
  2. その中で「全科目90以上」かを再チェック。
  3. 条件の優先順位をネストで表現。

✅ Q10:チケット予約システム

問題

  • 公演日が "平日"
     → 座席が "A" → 「料金:3000円」
     → 座席が "B" → 「料金:2000円」
  • 公演日が "土日"
     → 座席 "A" → 「料金:4000円」
     → 座席 "B" → 「料金:3000円」

💡 解答例

day = input("公演日は平日 or 土日?: ")
seat = input("座席ランク(A/B): ")

if day == "平日":
    if seat == "A":
        print("料金:3000円")
    else:
        print("料金:2000円")
else:
    if seat == "A":
        print("料金:4000円")
    else:
        print("料金:3000円")
Python

🪜 ステップ解説

  1. 外側の条件=日程。
  2. 内側の条件=座席ランク。
  3. 条件の組み合わせを整理する典型的なネスト構造。

この10問で学べるポイント

学習内容説明
ネスト構造ifの中でさらにifを使う
段階的条件1つの条件を通過した場合のみ次の条件へ進む
実務応用ログイン・購入・判定・料金計算など現実的処理
条件整理力「上位→下位」の優先関係を正しく設計する力
タイトルとURLをコピーしました