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で複雑な条件を表現できる
- 入れ子構造で詳細な条件分岐が可能
次の章では、繰り返し処理について学びます。条件分岐と組み合わせることで、さらに柔軟なプログラムが作れるようになります!