3. 条件分岐で判定する

前回は変数とデータ型について学びました。今回は、状況に応じて異なる処理を行う「条件分岐」について学んでいきましょう。

3.1 if 文で「もし〜なら」判定する基本

if文は、条件が成り立つときだけ特定の処理を実行します。日常での「もし雨が降ったら傘を持っていく」といった判断と同じです。

基本的なif文の形

# 基本的なif文の形
weather = "雨"
if weather == "雨":
    print("傘を持っていきましょう")
    print("長靴も必要かもしれません")

# 数値の判定
score = 85
if score >= 80:
    print("よくできました!")

# 気温の例
temperature = 32
if temperature >= 30:
    print("暑いので水分補給を忘れずに!")

if文のポイント

  • ifの後に条件を書く
  • 条件の後にコロン(:)が必要
  • 実行する処理は字下げ(インデント)する
  • インデントは半角スペース4つが基本

3.2 else で「それ以外」の処理を考える

elseを使うと、条件が成り立たない場合の処理を書けます:

合格判定の例

# 合格判定の例
score = 65
if score >= 70:
    print("合格です!")
else:
    print("残念、不合格です")

# お小遣いの例
money = 800
if money >= 1000:
    print("ゲームが買えます")
else:
    print("お小遣いが足りません")

3.3 elif で条件を増やしてみよう

elifを使うと、複数の条件を順番にチェックできます:

成績判定の例

# テストの成績判定
score = 82
if score >= 90:
    print("評価:A")
elif score >= 80:
    print("評価:B")
elif score >= 70:
    print("評価:C")
elif score >= 60:
    print("評価:D")
else:
    print("評価:F")

# 季節の判定
month = 7
if month == 12 or month <= 2:
    print("冬です")
elif month <= 5:
    print("春です")
elif month <= 8:
    print("夏です")
elif month <= 11:
    print("秋です")

3.4 and, or, not で条件を組み合わせる

複数の条件を組み合わせることができます:

成績判定の例

# and:両方の条件が成り立つとき
age = 16
score = 85
if age >= 15 and score >= 80:
    print("高校生で成績優秀です!")

# or:どちらかの条件が成り立つとき
if score < 60 or score > 100:
    print("点数が範囲外です")

# not:条件を逆にする
sunny = False
if not sunny:
    print("今日は曇りか雨です")

# 複数の条件を組み合わせる
temp = 28
humidity = 75
if temp >= 30 and humidity >= 70:
    print("蒸し暑い一日です")
elif temp >= 30 or humidity >= 70:
    print("やや不快な天気です")
else:
    print("快適な天気です")

3.5 複数条件を整理してわかりやすくする

条件が複雑になるときは、分かりやすく整理することが大切です:

成績判定の例

# 条件を変数にまとめる
is_student = age >= 15 and age <= 18
has_good_score = score >= 80
if is_student and has_good_score:
    print("成績優秀な高校生です")

# 条件を段階的にチェック
def check_temperature(temp):
    # 危険な暑さ
    if temp >= 35:
        print("危険な暑さです!外出を控えましょう")
        return

    # 要注意の暑さ
    if temp >= 30:
        print("熱中症に注意しましょう")
        return

    # 普通の暑さ
    print("普通の気温です")

3.6 条件分岐の入れ子構造を理解する

if文の中にif文を入れることもできます:

部活動の例

# 部活動の例
day = "月曜日"
weather = "雨"

if day == "月曜日":
    if weather == "晴れ":
        print("グラウンドで練習です")
    else:
        print("体育館で練習です")
else:
    print("今日は部活動はありません")

# 購入判断の例
price = 1200
money = 1000
discount = True

if money >= price:
    print("購入できます")
else:
    if discount:
        discounted_price = price * 0.8
        if money >= discounted_price:
            print("割引価格なら購入できます")
        else:
            print("割引されても予算オーバーです")
    else:
        print("予算が足りません")

3.7 簡単な条件分岐の練習問題

いくつかの練習問題を解いてみましょう:

年齢に応じたメッセージ

# 1. 年齢に応じたメッセージ
age = int(input("年齢を入力してください:"))
if age < 13:
    print("子供料金です")
elif age < 65:
    print("大人料金です")
else:
    print("シニア料金です")

# 2. パスワードチェック
password = input("パスワードを入力してください:")
if len(password) < 8:
    print("パスワードが短すぎます")
elif password.isdigit():
    print("数字だけのパスワードは危険です")
else:
    print("パスワードOK!")

課題 1. 入力した点数に応じて合否判定するプログラム

より実践的な成績判定プログラムを作ってみましょう:

点数を入力し、合否判定するプログラム

# 点数を入力
score = int(input("点数を入力してください(0-100):"))

# 点数の正当性をチェック
if score < 0 or score > 100:
    print("エラー:0から100の間の点数を入力してください")
else:
    # 判定処理
    if score >= 90:
        print("評価:A+")
        print("素晴らしい成績です!")
    elif score >= 80:
        print("評価:A")
        print("よくできました!")
    elif score >= 70:
        print("評価:B")
        print("がんばりました")
    elif score >= 60:
        print("評価:C")
        print("合格です")
    else:
        print("評価:D")
        print("残念ながら不合格です")

チャレンジ!

  • 複数の科目の点数を入力し、平均点も判定してみよう
  • 欠席日数なども考慮した総合判定を作ってみよう
  • より細かい評価基準を追加してみよう

課題 2. FizzBuzz 問題(3 の倍数、5 の倍数、15 の倍数で表示を変える)

プログラミングでよく出題される FizzBuzz 問題に挑戦しましょう:

1から100までの数字でFizzBuzzゲーム

# 1から100までの数字でFizzBuzzゲーム
for num in range(1, 101):
    if num % 15 == 0:
        # 15の倍数のとき
        print("FizzBuzz")
    elif num % 3 == 0:
        # 3の倍数のとき
        print("Fizz")
    elif num % 5 == 0:
        # 5の倍数のとき
        print("Buzz")
    else:
        # それ以外のとき
        print(num)

チャレンジ!

  • 別の数字の倍数でも判定してみよう
  • 入力した範囲の数字で実行できるようにしてみよう
  • オリジナルの言葉に変更してみよう

まとめ

この章では条件分岐について学びました:

  • if文で条件に応じた処理ができる
  • else, elifで複数の条件分岐を作れる
  • and, or, notで複雑な条件を表現できる
  • 入れ子構造で詳細な条件分岐が可能

次の章では、繰り返し処理について学びます。条件分岐と組み合わせることで、さらに柔軟なプログラムが作れるようになります!