演習:条件分岐の総合問題
目次
1. このレッスンで学ぶこと
- モジュール4で学んだ条件分岐の総合復習
- if, if-else, if-elif-elseの使い分け
- 実践的な条件判定プログラムの作成
- 複雑な条件を扱うスキル
2. なぜ演習が必要なのか?
条件分岐はプログラミングの基本中の基本です。実際に手を動かして、様々なパターンを実装することで、理解が深まります。
このレッスンでは、以下のトピックを総合的に復習します:
- if文の基本
- if-else文
- if-elif-else文
- ネストした条件分岐
- 条件式の書き方のコツ
💡 豆知識: プログラミングの上達には「反復練習」が重要です。同じような問題を何度も解くことで、パターンが身につき、自然とコードが書けるようになります。
3. 基礎演習
演習1: 年齢判定 ⭐☆☆
年齢が18歳以上なら「成人」、それ以外なら「未成年」と表示してください。
💡 ヒント
if-elseを使います。
✅ 解答例
Pythonage = 17 if age >= 18: print("成人") else: print("未成年")
実行結果:
未成年
演習2: 点数評価 ⭐☆☆
点数に応じて評価を表示してください:
- 80点以上: 優
- 60点以上: 良
- それ以外: 不可
💡 ヒント
if-elif-elseを使います。
✅ 解答例
Pythonscore = 75 if score >= 80: print("優") elif score >= 60: print("良") else: print("不可")
実行結果:
良
演習3: 偶数奇数判定 ⭐☆☆
数値が偶数なら「偶数」、奇数なら「奇数」と表示してください。
💡 ヒント
% 2の結果で判定します。
✅ 解答例
Pythonnumber = 7 if number % 2 == 0: print("偶数") else: print("奇数")
実行結果:
奇数
4. 中級演習
演習4: BMI判定 ⭐⭐☆
体重と身長からBMIを計算し、判定してください:
- 18.5未満: 低体重
- 18.5以上25未満: 普通体重
- 25以上30未満: 肥満(1度)
- 30以上: 肥満(2度以上)
💡 ヒント
BMI = 体重 / (身長の2乗)
✅ 解答例
Pythonweight = 65 # kg height = 1.7 # m bmi = weight / height ** 2 print(f"BMI: {bmi:.1f}") if bmi < 18.5: print("低体重") elif bmi < 25: print("普通体重") elif bmi < 30: print("肥満(1度)") else: print("肥満(2度以上)")
実行結果:
BMI: 22.5
普通体重
演習5: うるう年の判定 ⭐⭐☆
年が以下の条件を満たすときうるう年です:
- 4で割り切れる年はうるう年
- ただし、100で割り切れる年はうるう年ではない
- ただし、400で割り切れる年はうるう年
💡 ヒント
ネストした条件分岐を使います。
✅ 解答例
Pythonyear = 2024 if year % 400 == 0: print(f"{year}年はうるう年です") elif year % 100 == 0: print(f"{year}年はうるう年ではありません") elif year % 4 == 0: print(f"{year}年はうるう年です") else: print(f"{year}年はうるう年ではありません")
実行結果:
2024年はうるう年です
演習6: じゃんけんの判定 ⭐⭐☆
プレイヤーとコンピュータの手から勝敗を判定してください。
💡 ヒント
まず引き分けをチェック、次に勝ちパターンをチェックします。
✅ 解答例
Pythonplayer = "グー" computer = "チョキ" print(f"あなた: {player}") print(f"コンピュータ: {computer}") if player == computer: result = "引き分け" elif (player == "グー" and computer == "チョキ") or \ (player == "チョキ" and computer == "パー") or \ (player == "パー" and computer == "グー"): result = "あなたの勝ち" else: result = "あなたの負け" print(f"結果: {result}")
実行結果:
あなた: グー
コンピュータ: チョキ
結果: あなたの勝ち
5. 応用演習
演習7: 映画館の料金計算 ⭐⭐⭐
年齢と曜日に応じた料金を計算してください:
平日:
- 12歳以下: 1000円
- 13〜17歳: 1500円
- 18〜64歳: 1800円
- 65歳以上: 1200円
休日:
- 12歳以下: 1200円
- 13〜17歳: 1800円
- 18〜64歳: 2000円
- 65歳以上: 1400円
💡 ヒント
まず平日/休日で分岐し、その中で年齢で分岐します。
✅ 解答例
Pythonage = 15 is_weekend = False if is_weekend: # 休日料金 if age <= 12: price = 1200 elif age <= 17: price = 1800 elif age <= 64: price = 2000 else: price = 1400 day_type = "休日" else: # 平日料金 if age <= 12: price = 1000 elif age <= 17: price = 1500 elif age <= 64: price = 1800 else: price = 1200 day_type = "平日" print(f"年齢: {age}歳") print(f"曜日: {day_type}") print(f"料金: {price}円")
実行結果:
年齢: 15歳
曜日: 平日
料金: 1500円
演習8: 税金計算システム ⭐⭐⭐
所得金額に応じて所得税を計算してください:
- 195万円以下: 5%
- 195万円超〜330万円以下: 10%
- 330万円超〜695万円以下: 20%
- 695万円超: 30%
💡 ヒント
if-elif-elseで金額範囲を判定します。
✅ 解答例
Pythonincome = 4000000 # 400万円 if income <= 1950000: tax_rate = 0.05 bracket = "第1区分" elif income <= 3300000: tax_rate = 0.10 bracket = "第2区分" elif income <= 6950000: tax_rate = 0.20 bracket = "第3区分" else: tax_rate = 0.30 bracket = "第4区分" tax = int(income * tax_rate) print(f"所得金額: {income:,}円") print(f"税率区分: {bracket} ({tax_rate * 100}%)") print(f"所得税額: {tax:,}円")
実行結果:
所得金額: 4,000,000円
税率区分: 第3区分 (20.0%)
所得税額: 800,000円
演習9: パスワード強度チェック ⭐⭐⭐
パスワードの強度を判定してください:
- 8文字未満: 弱い
- 8文字以上で数字を含む: 中
- 12文字以上で数字と大文字を含む: 強い
💡 ヒント
any()と文字列メソッドを使います。
✅ 解答例
Pythonpassword = "MyPass123" length = len(password) has_digit = any(c.isdigit() for c in password) has_upper = any(c.isupper() for c in password) print(f"パスワード: {password}") print(f"文字数: {length}") print(f"数字を含む: {has_digit}") print(f"大文字を含む: {has_upper}") if length < 8: strength = "弱い" elif length >= 12 and has_digit and has_upper: strength = "強い" elif length >= 8 and has_digit: strength = "中" else: strength = "弱い" print(f"強度: {strength}")
実行結果:
パスワード: MyPass123
文字数: 9
数字を含む: True
大文字を含む: True
強度: 中
演習10: 総合判定システム ⭐⭐⭐
学生の総合評価を行ってください。以下の条件で判定:
- 筆記試験: 60点以上必要
- 実技試験: 70点以上必要
- 出席率: 80%以上必要
- すべて満たすと合格
- 1つでも満たさないと不合格(理由を表示)
💡 ヒント
各条件を変数に分けて判定します。
✅ 解答例
Pythonwritten_test = 75 practical_test = 68 attendance = 0.85 print("=== 試験結果 ===") print(f"筆記試験: {written_test}点") print(f"実技試験: {practical_test}点") print(f"出席率: {attendance * 100}%") # 各条件のチェック written_pass = written_test >= 60 practical_pass = practical_test >= 70 attendance_pass = attendance >= 0.8 # 総合判定 if written_pass and practical_pass and attendance_pass: print("\n結果: 合格") else: print("\n結果: 不合格") print("不合格理由:") if not written_pass: print(f" - 筆記試験が基準未達({written_test}点/60点以上必要)") if not practical_pass: print(f" - 実技試験が基準未達({practical_test}点/70点以上必要)") if not attendance_pass: print(f" - 出席率が基準未達({attendance * 100}%/80%以上必要)")
実行結果:
=== 試験結果 ===
筆記試験: 75点
実技試験: 68点
出席率: 85.0%
結果: 不合格
不合格理由:
- 実技試験が基準未達(68点/70点以上必要)
6. まとめ
このレッスンでは、条件分岐の基礎を演習で統合して確認しました。
- if、if-else、if-elif-else、ネストを使い分けて問題を解く力を確認しました。
- 条件式の設計と分岐順序が、実行結果に直結することを実践できました。
- 境界値を意識した判定を行い、分岐の漏れを防ぐ手順を学びました。
- 実装後に出力を確認し、条件を調整する流れを身につけました。
- 小さな判定を積み重ねて要件を満たす設計力を強化できました。
演習:条件分岐の総合問題
目次
1. このレッスンで学ぶこと
- モジュール4で学んだ条件分岐の総合復習
- if, if-else, if-elif-elseの使い分け
- 実践的な条件判定プログラムの作成
- 複雑な条件を扱うスキル
2. なぜ演習が必要なのか?
条件分岐はプログラミングの基本中の基本です。実際に手を動かして、様々なパターンを実装することで、理解が深まります。
このレッスンでは、以下のトピックを総合的に復習します:
- if文の基本
- if-else文
- if-elif-else文
- ネストした条件分岐
- 条件式の書き方のコツ
💡 豆知識: プログラミングの上達には「反復練習」が重要です。同じような問題を何度も解くことで、パターンが身につき、自然とコードが書けるようになります。
3. 基礎演習
演習1: 年齢判定 ⭐☆☆
年齢が18歳以上なら「成人」、それ以外なら「未成年」と表示してください。
💡 ヒント
if-elseを使います。
✅ 解答例
Pythonage = 17 if age >= 18: print("成人") else: print("未成年")
実行結果:
未成年
演習2: 点数評価 ⭐☆☆
点数に応じて評価を表示してください:
- 80点以上: 優
- 60点以上: 良
- それ以外: 不可
💡 ヒント
if-elif-elseを使います。
✅ 解答例
Pythonscore = 75 if score >= 80: print("優") elif score >= 60: print("良") else: print("不可")
実行結果:
良
演習3: 偶数奇数判定 ⭐☆☆
数値が偶数なら「偶数」、奇数なら「奇数」と表示してください。
💡 ヒント
% 2の結果で判定します。
✅ 解答例
Pythonnumber = 7 if number % 2 == 0: print("偶数") else: print("奇数")
実行結果:
奇数
4. 中級演習
演習4: BMI判定 ⭐⭐☆
体重と身長からBMIを計算し、判定してください:
- 18.5未満: 低体重
- 18.5以上25未満: 普通体重
- 25以上30未満: 肥満(1度)
- 30以上: 肥満(2度以上)
💡 ヒント
BMI = 体重 / (身長の2乗)
✅ 解答例
Pythonweight = 65 # kg height = 1.7 # m bmi = weight / height ** 2 print(f"BMI: {bmi:.1f}") if bmi < 18.5: print("低体重") elif bmi < 25: print("普通体重") elif bmi < 30: print("肥満(1度)") else: print("肥満(2度以上)")
実行結果:
BMI: 22.5
普通体重
演習5: うるう年の判定 ⭐⭐☆
年が以下の条件を満たすときうるう年です:
- 4で割り切れる年はうるう年
- ただし、100で割り切れる年はうるう年ではない
- ただし、400で割り切れる年はうるう年
💡 ヒント
ネストした条件分岐を使います。
✅ 解答例
Pythonyear = 2024 if year % 400 == 0: print(f"{year}年はうるう年です") elif year % 100 == 0: print(f"{year}年はうるう年ではありません") elif year % 4 == 0: print(f"{year}年はうるう年です") else: print(f"{year}年はうるう年ではありません")
実行結果:
2024年はうるう年です
演習6: じゃんけんの判定 ⭐⭐☆
プレイヤーとコンピュータの手から勝敗を判定してください。
💡 ヒント
まず引き分けをチェック、次に勝ちパターンをチェックします。
✅ 解答例
Pythonplayer = "グー" computer = "チョキ" print(f"あなた: {player}") print(f"コンピュータ: {computer}") if player == computer: result = "引き分け" elif (player == "グー" and computer == "チョキ") or \ (player == "チョキ" and computer == "パー") or \ (player == "パー" and computer == "グー"): result = "あなたの勝ち" else: result = "あなたの負け" print(f"結果: {result}")
実行結果:
あなた: グー
コンピュータ: チョキ
結果: あなたの勝ち
5. 応用演習
演習7: 映画館の料金計算 ⭐⭐⭐
年齢と曜日に応じた料金を計算してください:
平日:
- 12歳以下: 1000円
- 13〜17歳: 1500円
- 18〜64歳: 1800円
- 65歳以上: 1200円
休日:
- 12歳以下: 1200円
- 13〜17歳: 1800円
- 18〜64歳: 2000円
- 65歳以上: 1400円
💡 ヒント
まず平日/休日で分岐し、その中で年齢で分岐します。
✅ 解答例
Pythonage = 15 is_weekend = False if is_weekend: # 休日料金 if age <= 12: price = 1200 elif age <= 17: price = 1800 elif age <= 64: price = 2000 else: price = 1400 day_type = "休日" else: # 平日料金 if age <= 12: price = 1000 elif age <= 17: price = 1500 elif age <= 64: price = 1800 else: price = 1200 day_type = "平日" print(f"年齢: {age}歳") print(f"曜日: {day_type}") print(f"料金: {price}円")
実行結果:
年齢: 15歳
曜日: 平日
料金: 1500円
演習8: 税金計算システム ⭐⭐⭐
所得金額に応じて所得税を計算してください:
- 195万円以下: 5%
- 195万円超〜330万円以下: 10%
- 330万円超〜695万円以下: 20%
- 695万円超: 30%
💡 ヒント
if-elif-elseで金額範囲を判定します。
✅ 解答例
Pythonincome = 4000000 # 400万円 if income <= 1950000: tax_rate = 0.05 bracket = "第1区分" elif income <= 3300000: tax_rate = 0.10 bracket = "第2区分" elif income <= 6950000: tax_rate = 0.20 bracket = "第3区分" else: tax_rate = 0.30 bracket = "第4区分" tax = int(income * tax_rate) print(f"所得金額: {income:,}円") print(f"税率区分: {bracket} ({tax_rate * 100}%)") print(f"所得税額: {tax:,}円")
実行結果:
所得金額: 4,000,000円
税率区分: 第3区分 (20.0%)
所得税額: 800,000円
演習9: パスワード強度チェック ⭐⭐⭐
パスワードの強度を判定してください:
- 8文字未満: 弱い
- 8文字以上で数字を含む: 中
- 12文字以上で数字と大文字を含む: 強い
💡 ヒント
any()と文字列メソッドを使います。
✅ 解答例
Pythonpassword = "MyPass123" length = len(password) has_digit = any(c.isdigit() for c in password) has_upper = any(c.isupper() for c in password) print(f"パスワード: {password}") print(f"文字数: {length}") print(f"数字を含む: {has_digit}") print(f"大文字を含む: {has_upper}") if length < 8: strength = "弱い" elif length >= 12 and has_digit and has_upper: strength = "強い" elif length >= 8 and has_digit: strength = "中" else: strength = "弱い" print(f"強度: {strength}")
実行結果:
パスワード: MyPass123
文字数: 9
数字を含む: True
大文字を含む: True
強度: 中
演習10: 総合判定システム ⭐⭐⭐
学生の総合評価を行ってください。以下の条件で判定:
- 筆記試験: 60点以上必要
- 実技試験: 70点以上必要
- 出席率: 80%以上必要
- すべて満たすと合格
- 1つでも満たさないと不合格(理由を表示)
💡 ヒント
各条件を変数に分けて判定します。
✅ 解答例
Pythonwritten_test = 75 practical_test = 68 attendance = 0.85 print("=== 試験結果 ===") print(f"筆記試験: {written_test}点") print(f"実技試験: {practical_test}点") print(f"出席率: {attendance * 100}%") # 各条件のチェック written_pass = written_test >= 60 practical_pass = practical_test >= 70 attendance_pass = attendance >= 0.8 # 総合判定 if written_pass and practical_pass and attendance_pass: print("\n結果: 合格") else: print("\n結果: 不合格") print("不合格理由:") if not written_pass: print(f" - 筆記試験が基準未達({written_test}点/60点以上必要)") if not practical_pass: print(f" - 実技試験が基準未達({practical_test}点/70点以上必要)") if not attendance_pass: print(f" - 出席率が基準未達({attendance * 100}%/80%以上必要)")
実行結果:
=== 試験結果 ===
筆記試験: 75点
実技試験: 68点
出席率: 85.0%
結果: 不合格
不合格理由:
- 実技試験が基準未達(68点/70点以上必要)
6. まとめ
このレッスンでは、条件分岐の基礎を演習で統合して確認しました。
- if、if-else、if-elif-else、ネストを使い分けて問題を解く力を確認しました。
- 条件式の設計と分岐順序が、実行結果に直結することを実践できました。
- 境界値を意識した判定を行い、分岐の漏れを防ぐ手順を学びました。
- 実装後に出力を確認し、条件を調整する流れを身につけました。
- 小さな判定を積み重ねて要件を満たす設計力を強化できました。