演習:演算子を使った計算プログラム
目次
このレッスンで学ぶこと
- モジュール3で学んだ演算子の総合復習
- 実践的な計算プログラムの作成
- 算術・比較・論理演算子の組み合わせ
- 複合代入演算子を活用したコード
なぜ演習が必要なのか?
演算子は、プログラミングの基礎中の基礎です。実際に手を動かして、様々な演算子を組み合わせることで、理解が深まります。
このレッスンでは、以下のトピックを総合的に復習します:
- 算術演算子(+, -, *, /, //, %, **)
- 比較演算子(==, !=, <, >, <=, >=)
- 論理演算子(and, or, not)
- 複合代入演算子(+=, -=, *=, /=など)
💡 豆知識: プログラマーの上達には「Write Code Every Day(毎日コードを書く)」という言葉があります。小さな演習でも、毎日続けることで確実にスキルが向上します。
基礎演習
演習1: 四則演算の計算機 ⭐☆☆
2つの数値に対して、四則演算(加減乗除)の結果を全て表示してください。
💡 ヒント
+, -, *, / を使います。
✅ 解答例
Pythona = 15 b = 4 print(f"{a} + {b} = {a + b}") print(f"{a} - {b} = {a - b}") print(f"{a} × {b} = {a * b}") print(f"{a} ÷ {b} = {a / b}") print(f"{a} ÷ {b} = {a // b} 余り {a % b}")
実行結果:
15 + 4 = 19
15 - 4 = 11
15 × 4 = 60
15 ÷ 4 = 3.75
15 ÷ 4 = 3 余り 3
演習2: 偶数・奇数の判定 ⭐☆☆
数値が偶数か奇数かを判定してください。
💡 ヒント
% 2 の結果が0なら偶数、1なら奇数です。
✅ 解答例
Pythonnumber = 17 if number % 2 == 0: print(f"{number}は偶数です") else: print(f"{number}は奇数です")
実行結果:
17は奇数です
解説: 2で割った余りが0なら偶数、そうでなければ奇数です。
演習3: 範囲チェック ⭐⭐☆
点数が0〜100の範囲内にあるか確認し、範囲内なら評価(A〜F)を表示してください。
💡 ヒント
- 範囲チェック:
0 <= score <= 100 - 評価: if-elif-else
✅ 解答例
Pythonscore = 85 # 範囲チェック if not (0 <= score <= 100): print("無効な点数です") else: # 評価 if score >= 90: grade = "A" elif score >= 80: grade = "B" elif score >= 70: grade = "C" elif score >= 60: grade = "D" else: grade = "F" print(f"点数: {score}, 評価: {grade}")
実行結果:
点数: 85, 評価: B
中級演習
演習4: 割引価格の計算 ⭐⭐☆
商品の価格と割引率から、割引後の価格を計算してください。
仕様:
- 価格: 5000円
- 割引率: 30%
💡 ヒント
割引後 = 価格 × (1 - 割引率)
✅ 解答例
Pythonprice = 5000 discount_rate = 0.3 # 30% # 割引額 discount_amount = price * discount_rate # 割引後の価格 final_price = price - discount_amount # または final_price2 = price * (1 - discount_rate) print(f"元の価格: {price}円") print(f"割引率: {discount_rate * 100}%") print(f"割引額: {int(discount_amount)}円") print(f"割引後: {int(final_price)}円")
実行結果:
元の価格: 5000円
割引率: 30.0%
割引額: 1500円
割引後: 3500円
演習5: 時間の変換 ⭐⭐☆
秒数を「時:分:秒」の形式に変換してください。
仕様:
- 秒数: 3665秒
💡 ヒント
- 時 = 秒 // 3600
- 分 = (秒 % 3600) // 60
- 秒 = 秒 % 60
✅ 解答例
Pythontotal_seconds = 3665 # 時間 hours = total_seconds // 3600 # 分 remaining_seconds = total_seconds % 3600 minutes = remaining_seconds // 60 # 秒 seconds = remaining_seconds % 60 print(f"{total_seconds}秒 = {hours}時間{minutes}分{seconds}秒")
実行結果:
3665秒 = 1時間1分5秒
演習6: 三角形の面積 ⭐⭐☆
三角形の底辺と高さから面積を計算してください。
仕様:
- 底辺: 10cm
- 高さ: 8cm
- 面積 = 底辺 × 高さ ÷ 2
💡 ヒント
* と / を組み合わせます。
✅ 解答例
Pythonbase = 10 # 底辺 height = 8 # 高さ # 面積 = 底辺 × 高さ ÷ 2 area = base * height / 2 print(f"底辺: {base}cm") print(f"高さ: {height}cm") print(f"面積: {area}cm²")
実行結果:
底辺: 10cm
高さ: 8cm
面積: 40.0cm²
応用演習
演習7: 映画館の料金計算 ⭐⭐⭐
年齢と曜日に応じた料金を計算してください。
仕様:
- 平日: 大人1800円、子供(12歳以下)1000円、シニア(65歳以上)1200円
- 休日: 大人2000円、子供1200円、シニア1400円
💡 ヒント
- 論理演算子で条件を組み合わせる
- 年齢と曜日の両方をチェック
✅ 解答例
Pythonage = 10 is_weekend = False # 平日 # 料金設定 if is_weekend: # 休日料金 if age <= 12: price = 1200 category = "子供(休日)" elif age >= 65: price = 1400 category = "シニア(休日)" else: price = 2000 category = "大人(休日)" else: # 平日料金 if age <= 12: price = 1000 category = "子供(平日)" elif age >= 65: price = 1200 category = "シニア(平日)" else: price = 1800 category = "大人(平日)" print(f"年齢: {age}歳") print(f"料金区分: {category}") print(f"料金: {price}円")
実行結果:
年齢: 10歳
料金区分: 子供(平日)
料金: 1000円
演習8: ポイント計算システム ⭐⭐⭐
購入金額に応じてポイントを計算してください。
仕様:
- 1000円未満: ポイントなし
- 1000円以上5000円未満: 1%
- 5000円以上10000円未満: 3%
- 10000円以上: 5%
💡 ヒント
if-elif-elseで金額範囲を判定します。
✅ 解答例
Pythonpurchase_amount = 7500 # ポイント率の決定 if purchase_amount < 1000: point_rate = 0 elif purchase_amount < 5000: point_rate = 0.01 elif purchase_amount < 10000: point_rate = 0.03 else: point_rate = 0.05 # ポイント計算 points = int(purchase_amount * point_rate) print(f"購入金額: {purchase_amount}円") print(f"ポイント率: {point_rate * 100}%") print(f"獲得ポイント: {points}ポイント")
実行結果:
購入金額: 7500円
ポイント率: 3.0%
獲得ポイント: 225ポイント
演習9: 合格判定システム ⭐⭐⭐
複数の条件で合格判定を行ってください。
仕様:
- 筆記試験: 60点以上
- 実技試験: 70点以上
- 出席率: 80%以上
- すべての条件を満たすと合格
💡 ヒント
and で複数条件を組み合わせます。
✅ 解答例
Pythonwritten_test = 75 practical_test = 80 attendance = 0.85 # 各条件のチェック written_pass = written_test >= 60 practical_pass = practical_test >= 70 attendance_pass = attendance >= 0.8 # 総合判定 is_pass = written_pass and practical_pass and attendance_pass print("=== 試験結果 ===") print(f"筆記試験: {written_test}点 {'✓' if written_pass else '✗'}") print(f"実技試験: {practical_test}点 {'✓' if practical_pass else '✗'}") print(f"出席率: {attendance * 100}% {'✓' if attendance_pass else '✗'}") print() print(f"結果: {'合格' if is_pass else '不合格'}") # 不合格の場合、理由を表示 if not is_pass: print("\n不合格理由:") if not written_pass: print(" - 筆記試験が60点未満") if not practical_pass: print(" - 実技試験が70点未満") if not attendance_pass: print(" - 出席率が80%未満")
実行結果:
=== 試験結果 ===
筆記試験: 75点 ✓
実技試験: 80点 ✓
出席率: 85.0% ✓
結果: 合格
演習10: RPGのダメージ計算 ⭐⭐⭐
RPGゲームのダメージ計算システムを作成してください。
仕様:
- 基本攻撃力: 50
- クリティカル発生: はい/いいえ(クリティカルなら1.5倍)
- 相手の防御力: 20
- ダメージ = (攻撃力 - 防御力) × クリティカル倍率
💡 ヒント
条件によって倍率を変えます。
✅ 解答例
Pythonattack_power = 50 defense = 20 is_critical = True # クリティカル倍率 if is_critical: critical_multiplier = 1.5 critical_text = "クリティカル!" else: critical_multiplier = 1.0 critical_text = "通常攻撃" # 基本ダメージ base_damage = attack_power - defense # 最終ダメージ final_damage = int(base_damage * critical_multiplier) # ダメージは最低1 if final_damage < 1: final_damage = 1 print("=== 戦闘ログ ===") print(f"攻撃力: {attack_power}") print(f"相手の防御力: {defense}") print(f"基本ダメージ: {base_damage}") print(f"{critical_text}") print(f"最終ダメージ: {final_damage}")
実行結果:
=== 戦闘ログ ===
攻撃力: 50
相手の防御力: 20
基本ダメージ: 30
クリティカル!
最終ダメージ: 45
実践問題
演習11: 総合計算プログラム ⭐⭐⭐
以下の機能を持つ計算プログラムを作成してください。
仕様:
- 商品リスト(辞書のリスト):
Python
[ {"name": "りんご", "price": 150, "quantity": 5}, {"name": "みかん", "price": 100, "quantity": 8}, {"name": "バナナ", "price": 200, "quantity": 3} ] - 以下を計算・表示:
- 各商品の小計
- 合計金額
- 1000円以上なら5%割引を適用
- 消費税(10%)を加算
- 最終金額
💡 ヒント
- ループで各商品を処理
- 複合代入演算子で合計を計算
- 条件によって割引を適用
✅ 解答例
Python# 商品リスト items = [ {"name": "りんご", "price": 150, "quantity": 5}, {"name": "みかん", "price": 100, "quantity": 8}, {"name": "バナナ", "price": 200, "quantity": 3} ] print("=== お会計 ===") # 合計金額 total = 0 # 各商品の小計 for item in items: subtotal = item["price"] * item["quantity"] total += subtotal print(f"{item['name']}: {item['price']}円 × {item['quantity']}個 = {subtotal}円") print(f"\n小計: {total}円") # 割引判定 if total >= 1000: discount = int(total * 0.05) total -= discount print(f"割引(5%): -{discount}円") print(f"割引後: {total}円") # 消費税 tax = int(total * 0.1) total += tax print(f"消費税(10%): {tax}円") print(f"\n合計: {total}円")
実行結果:
=== お会計 ===
りんご: 150円 × 5個 = 750円
みかん: 100円 × 8個 = 800円
バナナ: 200円 × 3個 = 600円
小計: 2150円
割引(5%): -107円
割引後: 2043円
消費税(10%): 204円
合計: 2247円
まとめ
このレッスンでは、モジュール3で学んだ演算子を演習で統合して確認しました。
- 算術・比較・論理・複合代入の各演算子を、問題ごとに使い分ける力を確認しました。
- 計算処理と条件判定を組み合わせて、要件に沿った結果を出力できるようになりました。
- 実装時に値を段階的に更新し、可読性を保ちながら処理を組み立てる練習ができました。
- エラー時に中間結果や型を確認して原因を特定する、基本的なデバッグ手順を実践しました。
- 小さな仕様を分解し、順番に実装して検証する進め方を身につけました。
演習:演算子を使った計算プログラム
目次
このレッスンで学ぶこと
- モジュール3で学んだ演算子の総合復習
- 実践的な計算プログラムの作成
- 算術・比較・論理演算子の組み合わせ
- 複合代入演算子を活用したコード
なぜ演習が必要なのか?
演算子は、プログラミングの基礎中の基礎です。実際に手を動かして、様々な演算子を組み合わせることで、理解が深まります。
このレッスンでは、以下のトピックを総合的に復習します:
- 算術演算子(+, -, *, /, //, %, **)
- 比較演算子(==, !=, <, >, <=, >=)
- 論理演算子(and, or, not)
- 複合代入演算子(+=, -=, *=, /=など)
💡 豆知識: プログラマーの上達には「Write Code Every Day(毎日コードを書く)」という言葉があります。小さな演習でも、毎日続けることで確実にスキルが向上します。
基礎演習
演習1: 四則演算の計算機 ⭐☆☆
2つの数値に対して、四則演算(加減乗除)の結果を全て表示してください。
💡 ヒント
+, -, *, / を使います。
✅ 解答例
Pythona = 15 b = 4 print(f"{a} + {b} = {a + b}") print(f"{a} - {b} = {a - b}") print(f"{a} × {b} = {a * b}") print(f"{a} ÷ {b} = {a / b}") print(f"{a} ÷ {b} = {a // b} 余り {a % b}")
実行結果:
15 + 4 = 19
15 - 4 = 11
15 × 4 = 60
15 ÷ 4 = 3.75
15 ÷ 4 = 3 余り 3
演習2: 偶数・奇数の判定 ⭐☆☆
数値が偶数か奇数かを判定してください。
💡 ヒント
% 2 の結果が0なら偶数、1なら奇数です。
✅ 解答例
Pythonnumber = 17 if number % 2 == 0: print(f"{number}は偶数です") else: print(f"{number}は奇数です")
実行結果:
17は奇数です
解説: 2で割った余りが0なら偶数、そうでなければ奇数です。
演習3: 範囲チェック ⭐⭐☆
点数が0〜100の範囲内にあるか確認し、範囲内なら評価(A〜F)を表示してください。
💡 ヒント
- 範囲チェック:
0 <= score <= 100 - 評価: if-elif-else
✅ 解答例
Pythonscore = 85 # 範囲チェック if not (0 <= score <= 100): print("無効な点数です") else: # 評価 if score >= 90: grade = "A" elif score >= 80: grade = "B" elif score >= 70: grade = "C" elif score >= 60: grade = "D" else: grade = "F" print(f"点数: {score}, 評価: {grade}")
実行結果:
点数: 85, 評価: B
中級演習
演習4: 割引価格の計算 ⭐⭐☆
商品の価格と割引率から、割引後の価格を計算してください。
仕様:
- 価格: 5000円
- 割引率: 30%
💡 ヒント
割引後 = 価格 × (1 - 割引率)
✅ 解答例
Pythonprice = 5000 discount_rate = 0.3 # 30% # 割引額 discount_amount = price * discount_rate # 割引後の価格 final_price = price - discount_amount # または final_price2 = price * (1 - discount_rate) print(f"元の価格: {price}円") print(f"割引率: {discount_rate * 100}%") print(f"割引額: {int(discount_amount)}円") print(f"割引後: {int(final_price)}円")
実行結果:
元の価格: 5000円
割引率: 30.0%
割引額: 1500円
割引後: 3500円
演習5: 時間の変換 ⭐⭐☆
秒数を「時:分:秒」の形式に変換してください。
仕様:
- 秒数: 3665秒
💡 ヒント
- 時 = 秒 // 3600
- 分 = (秒 % 3600) // 60
- 秒 = 秒 % 60
✅ 解答例
Pythontotal_seconds = 3665 # 時間 hours = total_seconds // 3600 # 分 remaining_seconds = total_seconds % 3600 minutes = remaining_seconds // 60 # 秒 seconds = remaining_seconds % 60 print(f"{total_seconds}秒 = {hours}時間{minutes}分{seconds}秒")
実行結果:
3665秒 = 1時間1分5秒
演習6: 三角形の面積 ⭐⭐☆
三角形の底辺と高さから面積を計算してください。
仕様:
- 底辺: 10cm
- 高さ: 8cm
- 面積 = 底辺 × 高さ ÷ 2
💡 ヒント
* と / を組み合わせます。
✅ 解答例
Pythonbase = 10 # 底辺 height = 8 # 高さ # 面積 = 底辺 × 高さ ÷ 2 area = base * height / 2 print(f"底辺: {base}cm") print(f"高さ: {height}cm") print(f"面積: {area}cm²")
実行結果:
底辺: 10cm
高さ: 8cm
面積: 40.0cm²
応用演習
演習7: 映画館の料金計算 ⭐⭐⭐
年齢と曜日に応じた料金を計算してください。
仕様:
- 平日: 大人1800円、子供(12歳以下)1000円、シニア(65歳以上)1200円
- 休日: 大人2000円、子供1200円、シニア1400円
💡 ヒント
- 論理演算子で条件を組み合わせる
- 年齢と曜日の両方をチェック
✅ 解答例
Pythonage = 10 is_weekend = False # 平日 # 料金設定 if is_weekend: # 休日料金 if age <= 12: price = 1200 category = "子供(休日)" elif age >= 65: price = 1400 category = "シニア(休日)" else: price = 2000 category = "大人(休日)" else: # 平日料金 if age <= 12: price = 1000 category = "子供(平日)" elif age >= 65: price = 1200 category = "シニア(平日)" else: price = 1800 category = "大人(平日)" print(f"年齢: {age}歳") print(f"料金区分: {category}") print(f"料金: {price}円")
実行結果:
年齢: 10歳
料金区分: 子供(平日)
料金: 1000円
演習8: ポイント計算システム ⭐⭐⭐
購入金額に応じてポイントを計算してください。
仕様:
- 1000円未満: ポイントなし
- 1000円以上5000円未満: 1%
- 5000円以上10000円未満: 3%
- 10000円以上: 5%
💡 ヒント
if-elif-elseで金額範囲を判定します。
✅ 解答例
Pythonpurchase_amount = 7500 # ポイント率の決定 if purchase_amount < 1000: point_rate = 0 elif purchase_amount < 5000: point_rate = 0.01 elif purchase_amount < 10000: point_rate = 0.03 else: point_rate = 0.05 # ポイント計算 points = int(purchase_amount * point_rate) print(f"購入金額: {purchase_amount}円") print(f"ポイント率: {point_rate * 100}%") print(f"獲得ポイント: {points}ポイント")
実行結果:
購入金額: 7500円
ポイント率: 3.0%
獲得ポイント: 225ポイント
演習9: 合格判定システム ⭐⭐⭐
複数の条件で合格判定を行ってください。
仕様:
- 筆記試験: 60点以上
- 実技試験: 70点以上
- 出席率: 80%以上
- すべての条件を満たすと合格
💡 ヒント
and で複数条件を組み合わせます。
✅ 解答例
Pythonwritten_test = 75 practical_test = 80 attendance = 0.85 # 各条件のチェック written_pass = written_test >= 60 practical_pass = practical_test >= 70 attendance_pass = attendance >= 0.8 # 総合判定 is_pass = written_pass and practical_pass and attendance_pass print("=== 試験結果 ===") print(f"筆記試験: {written_test}点 {'✓' if written_pass else '✗'}") print(f"実技試験: {practical_test}点 {'✓' if practical_pass else '✗'}") print(f"出席率: {attendance * 100}% {'✓' if attendance_pass else '✗'}") print() print(f"結果: {'合格' if is_pass else '不合格'}") # 不合格の場合、理由を表示 if not is_pass: print("\n不合格理由:") if not written_pass: print(" - 筆記試験が60点未満") if not practical_pass: print(" - 実技試験が70点未満") if not attendance_pass: print(" - 出席率が80%未満")
実行結果:
=== 試験結果 ===
筆記試験: 75点 ✓
実技試験: 80点 ✓
出席率: 85.0% ✓
結果: 合格
演習10: RPGのダメージ計算 ⭐⭐⭐
RPGゲームのダメージ計算システムを作成してください。
仕様:
- 基本攻撃力: 50
- クリティカル発生: はい/いいえ(クリティカルなら1.5倍)
- 相手の防御力: 20
- ダメージ = (攻撃力 - 防御力) × クリティカル倍率
💡 ヒント
条件によって倍率を変えます。
✅ 解答例
Pythonattack_power = 50 defense = 20 is_critical = True # クリティカル倍率 if is_critical: critical_multiplier = 1.5 critical_text = "クリティカル!" else: critical_multiplier = 1.0 critical_text = "通常攻撃" # 基本ダメージ base_damage = attack_power - defense # 最終ダメージ final_damage = int(base_damage * critical_multiplier) # ダメージは最低1 if final_damage < 1: final_damage = 1 print("=== 戦闘ログ ===") print(f"攻撃力: {attack_power}") print(f"相手の防御力: {defense}") print(f"基本ダメージ: {base_damage}") print(f"{critical_text}") print(f"最終ダメージ: {final_damage}")
実行結果:
=== 戦闘ログ ===
攻撃力: 50
相手の防御力: 20
基本ダメージ: 30
クリティカル!
最終ダメージ: 45
実践問題
演習11: 総合計算プログラム ⭐⭐⭐
以下の機能を持つ計算プログラムを作成してください。
仕様:
- 商品リスト(辞書のリスト):
Python
[ {"name": "りんご", "price": 150, "quantity": 5}, {"name": "みかん", "price": 100, "quantity": 8}, {"name": "バナナ", "price": 200, "quantity": 3} ] - 以下を計算・表示:
- 各商品の小計
- 合計金額
- 1000円以上なら5%割引を適用
- 消費税(10%)を加算
- 最終金額
💡 ヒント
- ループで各商品を処理
- 複合代入演算子で合計を計算
- 条件によって割引を適用
✅ 解答例
Python# 商品リスト items = [ {"name": "りんご", "price": 150, "quantity": 5}, {"name": "みかん", "price": 100, "quantity": 8}, {"name": "バナナ", "price": 200, "quantity": 3} ] print("=== お会計 ===") # 合計金額 total = 0 # 各商品の小計 for item in items: subtotal = item["price"] * item["quantity"] total += subtotal print(f"{item['name']}: {item['price']}円 × {item['quantity']}個 = {subtotal}円") print(f"\n小計: {total}円") # 割引判定 if total >= 1000: discount = int(total * 0.05) total -= discount print(f"割引(5%): -{discount}円") print(f"割引後: {total}円") # 消費税 tax = int(total * 0.1) total += tax print(f"消費税(10%): {tax}円") print(f"\n合計: {total}円")
実行結果:
=== お会計 ===
りんご: 150円 × 5個 = 750円
みかん: 100円 × 8個 = 800円
バナナ: 200円 × 3個 = 600円
小計: 2150円
割引(5%): -107円
割引後: 2043円
消費税(10%): 204円
合計: 2247円
まとめ
このレッスンでは、モジュール3で学んだ演算子を演習で統合して確認しました。
- 算術・比較・論理・複合代入の各演算子を、問題ごとに使い分ける力を確認しました。
- 計算処理と条件判定を組み合わせて、要件に沿った結果を出力できるようになりました。
- 実装時に値を段階的に更新し、可読性を保ちながら処理を組み立てる練習ができました。
- エラー時に中間結果や型を確認して原因を特定する、基本的なデバッグ手順を実践しました。
- 小さな仕様を分解し、順番に実装して検証する進め方を身につけました。