ネストした条件分岐
目次
1. このレッスンで学ぶこと
- ネスト(入れ子)とは何か
- if文の中にif文を書く方法
- 複雑な条件判定の実装
- ネストを避けるテクニック
2. ネストした条件分岐とは
**ネスト(入れ子)**とは、if文のブロック内にさらに別のif文を書く構造のことです。「もし〜ならば、さらにもし〜ならば」という段階的な条件判定を実現します。
ネストの基本構造
Pythonif 外側の条件: if 内側の条件: 処理A # 両方の条件が真 else: 処理B # 外側が真、内側が偽 else: 処理C # 外側が偽
ネストの構成要素
| 要素 | 説明 | インデント |
|---|---|---|
| 外側のif文 | 最初の条件チェック | スペース4つ |
| 内側のif文 | 2番目の条件チェック | スペース8つ |
| 処理 | 実行される命令 | スペース8つ以上 |
ネストの特徴
- if文の中にさらにif文を書ける
- インデントのレベルで階層を表現
- 複数の条件を段階的にチェック
- 3階層以上は避けるべき(読みにくい)
簡単な例
Python# 年齢と免許の両方をチェック age = 20 has_license = True if age >= 18: # 外側の条件が真の場合、内側をチェック if has_license: print("運転できます") # 両方真 else: print("免許が必要です") # 年齢のみ真 else: print("年齢が足りません") # 外側が偽
3. なぜネストした条件分岐が必要なのか?
複数の条件を組み合わせて判定したい場合、if文の中にさらにif文を書く必要があります。
Pythonage = 25 has_license = True # 年齢と免許の両方をチェック if age >= 18: if has_license: print("運転できます") else: print("免許が必要です") else: print("年齢が足りません")
**ネスト(入れ子)**を使うことで、段階的な条件判定ができます。
💡 豆知識: ネスト(nest)は「巣」を意味します。鳥の巣のように、構造の中に別の構造が入っている状態を表す言葉です。プログラミングではよく使われる概念です。
4. ネストの基本
基本的な書き方
機能: if文のブロック内にさらにif文を書き、段階的に条件を絞り込みます。
Pythonif 外側の条件: if 内側の条件1: 処理A else: 処理B else: 処理C
書き方のルール:
- 外側のif文の処理ブロック内に内側のif文を書く
- 内側のif文はさらにインデントする(スペース8つ)
- インデントのレベルで階層を表現
用途: 複雑な条件判定、段階的なチェック、権限管理
5. 具体例
例1: 年齢と免許のチェック
Pythonage = 25 has_license = True if age >= 18: print("年齢条件クリア") if has_license: print("運転できます") else: print("免許を取得してください") else: print(f"あと{18 - age}年待ってください") # 実行結果: # 年齢条件クリア # 運転できます
例2: ログインチェック
Pythonusername = "admin" password = "pass123" correct_username = "admin" correct_password = "secret123" if username == correct_username: print("ユーザー名OK") if password == correct_password: print("ログイン成功") else: print("パスワードが違います") else: print("ユーザー名が存在しません") # 実行結果: # ユーザー名OK # パスワードが違います
例3: 成績と出席率の判定
Pythonscore = 75 attendance = 0.85 if score >= 60: print("点数合格") if attendance >= 0.8: print("総合合格") else: print("出席率不足") else: print("点数不足") # 実行結果: # 点数合格 # 総合合格
6. ネストを避けるテクニック
論理演算子を使う
Python# ネストあり age = 25 has_license = True if age >= 18: if has_license: print("運転できます") # ネストなし(and を使う) if age >= 18 and has_license: print("運転できます")
早期リターン(関数で)
Python# ネストあり def check_access(age, is_member): if age >= 18: if is_member: return "アクセス許可" else: return "会員登録が必要" else: return "年齢制限" # ネストなし(早期リターン) def check_access(age, is_member): if age < 18: return "年齢制限" if not is_member: return "会員登録が必要" return "アクセス許可"
7. 練習問題
問題1(基礎)⭐☆☆
年齢が18歳以上で、かつ点数が60点以上なら「合格」と表示してください。ネストを使って実装してください。
💡 ヒント
外側で年齢、内側で点数をチェックします。
✅ 解答例
Pythonage = 20 score = 75 if age >= 18: if score >= 60: print("合格") else: print("点数不足") else: print("年齢不足")
実行結果:
合格
解説: 外側のif文で年齢をチェックし、内側のif文で点数をチェックします。
問題2(基礎)⭐☆☆
ユーザー名が"admin"で、かつパスワードが"1234"なら「ログイン成功」、それ以外は適切なエラーメッセージを表示してください。
💡 ヒント
まずユーザー名、次にパスワードをチェックします。
✅ 解答例
Pythonusername = "admin" password = "1234" if username == "admin": if password == "1234": print("ログイン成功") else: print("パスワードが違います") else: print("ユーザー名が違います")
実行結果:
ログイン成功
解説: 段階的にチェックすることで、具体的なエラーメッセージを表示できます。
問題3(応用)⭐⭐☆
年齢と会員ステータスに応じて料金を決定してください:
- 18歳未満: 子供料金500円
- 18歳以上:
- 会員: 800円
- 非会員: 1200円
💡 ヒント
年齢で分岐し、18歳以上の場合はさらに会員かどうかで分岐します。
✅ 解答例
Pythonage = 25 is_member = True if age < 18: price = 500 print("子供料金") else: if is_member: price = 800 print("会員料金") else: price = 1200 print("通常料金") print(f"料金: {price}円")
実行結果:
会員料金
料金: 800円
解説: 年齢で大きく分岐し、大人の場合はさらに会員ステータスで分岐します。
8. まとめ
このレッスンでは、ネストしたif文で条件を段階的に判定する方法を学びました。
- if文の中にif文を書くことで、条件を細かく絞り込めます。
- 外側条件と内側条件を分けることで、判定ロジックを整理できます。
- ネストが深くなるほど可読性が下がるため、構造を意識して書く必要があります。
- 条件の意味を明確にして、必要最小限のネストにすることが重要です。
- 実行経路を追って確認すると、分岐ミスを早く見つけられます。
ネストした条件分岐
目次
1. このレッスンで学ぶこと
- ネスト(入れ子)とは何か
- if文の中にif文を書く方法
- 複雑な条件判定の実装
- ネストを避けるテクニック
2. ネストした条件分岐とは
**ネスト(入れ子)**とは、if文のブロック内にさらに別のif文を書く構造のことです。「もし〜ならば、さらにもし〜ならば」という段階的な条件判定を実現します。
ネストの基本構造
Pythonif 外側の条件: if 内側の条件: 処理A # 両方の条件が真 else: 処理B # 外側が真、内側が偽 else: 処理C # 外側が偽
ネストの構成要素
| 要素 | 説明 | インデント |
|---|---|---|
| 外側のif文 | 最初の条件チェック | スペース4つ |
| 内側のif文 | 2番目の条件チェック | スペース8つ |
| 処理 | 実行される命令 | スペース8つ以上 |
ネストの特徴
- if文の中にさらにif文を書ける
- インデントのレベルで階層を表現
- 複数の条件を段階的にチェック
- 3階層以上は避けるべき(読みにくい)
簡単な例
Python# 年齢と免許の両方をチェック age = 20 has_license = True if age >= 18: # 外側の条件が真の場合、内側をチェック if has_license: print("運転できます") # 両方真 else: print("免許が必要です") # 年齢のみ真 else: print("年齢が足りません") # 外側が偽
3. なぜネストした条件分岐が必要なのか?
複数の条件を組み合わせて判定したい場合、if文の中にさらにif文を書く必要があります。
Pythonage = 25 has_license = True # 年齢と免許の両方をチェック if age >= 18: if has_license: print("運転できます") else: print("免許が必要です") else: print("年齢が足りません")
**ネスト(入れ子)**を使うことで、段階的な条件判定ができます。
💡 豆知識: ネスト(nest)は「巣」を意味します。鳥の巣のように、構造の中に別の構造が入っている状態を表す言葉です。プログラミングではよく使われる概念です。
4. ネストの基本
基本的な書き方
機能: if文のブロック内にさらにif文を書き、段階的に条件を絞り込みます。
Pythonif 外側の条件: if 内側の条件1: 処理A else: 処理B else: 処理C
書き方のルール:
- 外側のif文の処理ブロック内に内側のif文を書く
- 内側のif文はさらにインデントする(スペース8つ)
- インデントのレベルで階層を表現
用途: 複雑な条件判定、段階的なチェック、権限管理
5. 具体例
例1: 年齢と免許のチェック
Pythonage = 25 has_license = True if age >= 18: print("年齢条件クリア") if has_license: print("運転できます") else: print("免許を取得してください") else: print(f"あと{18 - age}年待ってください") # 実行結果: # 年齢条件クリア # 運転できます
例2: ログインチェック
Pythonusername = "admin" password = "pass123" correct_username = "admin" correct_password = "secret123" if username == correct_username: print("ユーザー名OK") if password == correct_password: print("ログイン成功") else: print("パスワードが違います") else: print("ユーザー名が存在しません") # 実行結果: # ユーザー名OK # パスワードが違います
例3: 成績と出席率の判定
Pythonscore = 75 attendance = 0.85 if score >= 60: print("点数合格") if attendance >= 0.8: print("総合合格") else: print("出席率不足") else: print("点数不足") # 実行結果: # 点数合格 # 総合合格
6. ネストを避けるテクニック
論理演算子を使う
Python# ネストあり age = 25 has_license = True if age >= 18: if has_license: print("運転できます") # ネストなし(and を使う) if age >= 18 and has_license: print("運転できます")
早期リターン(関数で)
Python# ネストあり def check_access(age, is_member): if age >= 18: if is_member: return "アクセス許可" else: return "会員登録が必要" else: return "年齢制限" # ネストなし(早期リターン) def check_access(age, is_member): if age < 18: return "年齢制限" if not is_member: return "会員登録が必要" return "アクセス許可"
7. 練習問題
問題1(基礎)⭐☆☆
年齢が18歳以上で、かつ点数が60点以上なら「合格」と表示してください。ネストを使って実装してください。
💡 ヒント
外側で年齢、内側で点数をチェックします。
✅ 解答例
Pythonage = 20 score = 75 if age >= 18: if score >= 60: print("合格") else: print("点数不足") else: print("年齢不足")
実行結果:
合格
解説: 外側のif文で年齢をチェックし、内側のif文で点数をチェックします。
問題2(基礎)⭐☆☆
ユーザー名が"admin"で、かつパスワードが"1234"なら「ログイン成功」、それ以外は適切なエラーメッセージを表示してください。
💡 ヒント
まずユーザー名、次にパスワードをチェックします。
✅ 解答例
Pythonusername = "admin" password = "1234" if username == "admin": if password == "1234": print("ログイン成功") else: print("パスワードが違います") else: print("ユーザー名が違います")
実行結果:
ログイン成功
解説: 段階的にチェックすることで、具体的なエラーメッセージを表示できます。
問題3(応用)⭐⭐☆
年齢と会員ステータスに応じて料金を決定してください:
- 18歳未満: 子供料金500円
- 18歳以上:
- 会員: 800円
- 非会員: 1200円
💡 ヒント
年齢で分岐し、18歳以上の場合はさらに会員かどうかで分岐します。
✅ 解答例
Pythonage = 25 is_member = True if age < 18: price = 500 print("子供料金") else: if is_member: price = 800 print("会員料金") else: price = 1200 print("通常料金") print(f"料金: {price}円")
実行結果:
会員料金
料金: 800円
解説: 年齢で大きく分岐し、大人の場合はさらに会員ステータスで分岐します。
8. まとめ
このレッスンでは、ネストしたif文で条件を段階的に判定する方法を学びました。
- if文の中にif文を書くことで、条件を細かく絞り込めます。
- 外側条件と内側条件を分けることで、判定ロジックを整理できます。
- ネストが深くなるほど可読性が下がるため、構造を意識して書く必要があります。
- 条件の意味を明確にして、必要最小限のネストにすることが重要です。
- 実行経路を追って確認すると、分岐ミスを早く見つけられます。