🔀 ステップ5: 条件分岐で処理を分けよう
プログラムに「判断」させよう!if文をマスター
ステップ4では、リストでデータをまとめる方法を学びました。今回は、「もし〜なら」という条件によって処理を変える方法を学びます。これが「条件分岐」です。
📖 このステップで学ぶこと
・if文の基本構文
・else(それ以外)の使い方
・elif(複数の条件)の使い方
・and、or、notで条件を組み合わせる
・インデント(字下げ)の重要性
・ネスト(入れ子)構造
・実践的なデータ判定の例
🤔 1. 条件分岐とは何か?
今まで作ったプログラムは、上から順番に実行されるだけでした。でも、実際のプログラムでは、「もし〜なら」という条件によって、処理を変えたいことがよくあります。
🔰 日常生活の条件分岐
私たちは、日常生活で常に「条件分岐」をしています。
📌 日常の例
雨が降っているなら → 傘を持っていく
テストが80点以上なら → 合格
年齢が18歳以上なら → 大人料金
在庫があるなら → 購入できる
お腹が空いているなら → ご飯を食べる
Pythonでは、if文(イフ文)を使って条件分岐を実現します。
💡 if文の重要性
if文がないと、すべての人に同じ処理をすることしかできません。
if文があることで:
・年齢によって料金を変える
・成績によって合格・不合格を判定する
・在庫の有無で表示を変える
など、柔軟なプログラムが作れるようになります。
✅ 2. if文の基本
if文は、「もし〜なら」という条件を表現する構文です。
🔰 if文の書き方
📌 if文の構文
if 条件:
条件が正しいときに実行する処理
※ 画面が小さい場合は、コードブロックを横にスクロールできます
3つのルール:
1. ifの後に条件を書く
2. 条件の後に:(コロン)を付ける
3. 実行する処理はインデント(字下げ)する
🔑 インデントが超重要!
Pythonでは、インデント(字下げ)がとても重要です。
インデントされた部分が「if文の中身」として実行されます。
通常はスペース4つでインデントします。
Google Colabでは、Tabキーを押すと自動で4スペースが入ります。
📘 最初のif文を書いてみよう
コード:年齢判定の基本
# 年齢が18歳以上なら「大人です」と表示
age = 20
if age >= 18:
print("大人です")
実行結果
大人です
💡 コードの解説
age = 20
・変数ageに20を代入します
・この値が条件判定に使われます
if age >= 18:
・「もしageが18以上なら」という条件です
・>=は「以上」を意味します
・最後に:(コロン)を忘れずに書きます
print(“大人です”)
・条件が正しい(True)の場合に実行されます
・スペース4つ分インデントされています
・ageが20なので、20 >= 18はTrueです。だから実行されます
📝 条件が正しくない場合
コード:条件がFalseの場合
# 年齢が18歳未満の場合
age = 15
if age >= 18:
print("大人です")
print("プログラム終了")
実行結果
プログラム終了
💡 何が起きたか
・ageが15なので、15 >= 18はFalse(正しくない)です
・条件がFalseなので、print(“大人です”)は実行されません
・if文の外にあるprint(“プログラム終了”)は常に実行されます
📝 複数の処理を実行する
コード:複数行の処理
# 点数が80点以上なら「合格」と表示
score = 85
if score >= 80:
print("合格です!")
print("おめでとうございます")
print("素晴らしい成績です")
print("判定終了")
実行結果
合格です! おめでとうございます 素晴らしい成績です 判定終了
💡 複数行の処理
・if文の中身は、何行でも書けます
・すべて同じ量(スペース4つ)インデントする必要があります
・インデントされている行は全て、条件がTrueの時だけ実行されます
・インデントされていない行(「判定終了」)は、常に実行されます
🔀 3. else(それ以外)を使おう
elseを使うと、条件が正しくない(False)ときの処理も書けます。
🔰 elseの書き方
📌 if-else文の構文
if 条件:
条件が正しいときの処理
else:
条件が正しくないときの処理
ポイント:
・elseの後にも:(コロン)が必要です
・elseに条件は書きません(ifの条件以外、すべてという意味)
・else以下の処理もインデントします
📘 if-else文を使ってみよう
コード:年齢による料金判定
# 年齢によって料金を表示
age = 15
if age >= 18:
print("大人料金:1000円")
else:
print("子供料金:500円")
実行結果
子供料金:500円
💡 コードの解説
if age >= 18:
・ageが18以上かチェックします
・ageが15なので、Falseです
print(“大人料金:1000円”)
・条件がFalseなので、この行は実行されません
else:
・ifの条件が正しくない場合、こちらが実行されます
・「それ以外」という意味です
print(“子供料金:500円”)
・elseの中なので、こちらが実行されます
📝 別の例:天気による判断
コード:天気による判断
# 天気によってメッセージを変える
weather = "晴れ"
if weather == "雨":
print("傘を持っていきましょう")
else:
print("傘は不要です")
実行結果
傘は不要です
💡 ==(イコール2つ)に注意
weather == “雨”
・==は「等しいかどうか」を比較します
・=(イコール1つ)は代入、==(イコール2つ)は比較です
・weatherが”晴れ”なので、”晴れ” == “雨”はFalseです
・だからelseの方が実行されます
🔀🔀 4. elif(複数の条件)
elif(エリフ、else ifの略)を使うと、3つ以上の選択肢を作れます。
🔰 elifの書き方
📌 if-elif-else文の構文
if 条件1:
条件1が正しいときの処理
elif 条件2:
条件2が正しいときの処理
elif 条件3:
条件3が正しいときの処理
else:
どの条件も正しくないときの処理
ポイント:
・elifは何個でも書けます
・上から順番にチェックされます
・最初にTrueになった条件の処理だけが実行されます
・残りはスキップされます
🔑 重要な動作
elif文は上から順番にチェックされます。
最初に正しい条件が見つかったら、その処理だけが実行されます。
残りのelif、elseは全てスキップされます。
📘 成績判定プログラム
コード:点数による評価
# 点数によって評価を変える
score = 75
if score >= 90:
print("評価:A(優秀)")
elif score >= 80:
print("評価:B(良好)")
elif score >= 70:
print("評価:C(普通)")
elif score >= 60:
print("評価:D(要努力)")
else:
print("評価:F(不合格)")
実行結果
評価:C(普通)
💡 コードの解説
scoreが75の場合、以下の順番でチェックされます:
1. if score >= 90:
・75 >= 90 → False(スキップ)
2. elif score >= 80:
・75 >= 80 → False(スキップ)
3. elif score >= 70:
・75 >= 70 → True(ここが実行される!)
・「評価:C(普通)」と表示されます
4. 残りのelifとelse
・すでにTrueの条件が見つかったので、チェックされません
📝 年齢による分類
コード:年齢区分
age = 25
if age < 13:
print("子供")
elif age < 20:
print("ティーンエイジャー")
elif age < 65:
print("大人")
else:
print("シニア")
実行結果
大人
💡 範囲の指定方法
このコードは、範囲を段階的に絞り込んでいます:
・13未満 → 子供
・20未満(13以上) → ティーンエイジャー
・65未満(20以上) → 大人
・それ以外(65以上) → シニア
上から順番にチェックされるので、各条件は前の条件が False だった場合だけチェックされます。
🔗 5. 複数条件の組み合わせ
and、or、notを使うと、複数の条件を組み合わせられます。
🔰 論理演算子の種類
📌 論理演算子一覧
| 演算子 | 意味 | 例 |
| and | かつ(両方True) | age >= 18 and has_license |
| or | または(どちらかTrue) | day == "土曜日" or day == "日曜日" |
| not | 否定(逆にする) | not is_raining |
📘 and(かつ)の使い方
andは、両方の条件がTrueの時だけTrueになります。
コード:and演算子
# 両方の条件を満たす必要がある
age = 25
has_license = True
if age >= 18 and has_license:
print("運転できます")
else:
print("運転できません")
実行結果
運転できます
💡 andの意味
age >= 18 and has_license
・「18歳以上」かつ「免許を持っている」
・両方の条件が満たされる必要があります
・ageが25でTrue、has_licenseがTrueなので、結果はTrue
・1つでもFalseがあると、全体がFalseになります
📘 or(または)の使い方
orは、どちらか1つでもTrueならTrueになります。
コード:or演算子
# どちらかの条件を満たせばOK
day = "土曜日"
if day == "土曜日" or day == "日曜日":
print("休日です")
else:
print("平日です")
実行結果
休日です
💡 orの意味
day == "土曜日" or day == "日曜日"
・「土曜日」または「日曜日」
・どちらか1つでも満たされていればOK
・dayが"土曜日"なので、左側がTrueです
・orは1つでもTrueがあれば、全体がTrueになります
📘 not(否定)の使い方
notは、TrueとFalseを逆にします。
コード:not演算子
# 条件の否定
is_raining = False
if not is_raining:
print("雨は降っていません")
else:
print("雨が降っています")
実行結果
雨は降っていません
💡 notの意味
not is_raining
・is_rainingの値を逆にします
・is_rainingがFalseなので、not Falseは→ True
・「雨が降っていない」という意味になります
📝 複雑な条件の組み合わせ
コード:andとorの組み合わせ
# 複数の条件を組み合わせる
age = 16
has_ticket = True
has_parent = True
# 18歳以上、または、チケットがあり保護者同伴
if age >= 18 or (has_ticket and has_parent):
print("入場できます")
else:
print("入場できません")
実行結果
入場できます
💡 カッコの使用
age >= 18 or (has_ticket and has_parent)
・カッコ()で優先順位を明確にしています
・まず(has_ticket and has_parent)が評価されます
・True and True = True
・次に age >= 18 or True が評価されます
・16 >= 18はFalseですが、False or TrueはTrue
・結果はTrueなので「入場できます」と表示されます
📌 カッコで優先順位を明確に
複雑な条件式では、カッコ()を使って優先順位を明確にしましょう。
カッコがないと、and が or より優先されます。
でもカッコを使えば、意図が明確になり、読みやすくなります。
🎯 6. 実践例:データの判定
データ分析では、if文を使ってデータを分類したり、異常値を検出したりします。
📘 例1:温度の分類
コード:温度による状態判定
# 温度によって状態を判定
temperature = 25
if temperature < 0:
status = "凍結"
elif temperature < 10:
status = "寒い"
elif temperature < 20:
status = "涼しい"
elif temperature < 30:
status = "快適"
else:
status = "暑い"
print(f"気温{temperature}度:{status}")
実行結果
気温25度:快適
💡 f文字列の使い方
f"気温{temperature}度:{status}"
・fをつけると、{ }の中に変数を埋め込めます
・これを「f文字列」と呼びます
・temperatureが25、statusが"快適"なので
・「気温25度:快適」という文字列が作られます
📘 例2:売上目標の達成判定
コード:売上目標との比較
# 売上目標との比較
target = 100000
actual = 85000
if actual >= target:
print("目標達成!")
achievement_rate = (actual / target) * 100
print(f"達成率:{achievement_rate}%")
else:
print("目標未達成")
shortage = target - actual
print(f"不足額:{shortage}円")
実行結果
目標未達成 不足額:15000円
💡 コードの解説
if actual >= target:
・実績が目標以上かチェックします
・85000 >= 100000はFalse
else:
・目標未達成の場合の処理です
shortage = target - actual
・不足額を計算します
・100000 - 85000 = 15000
📘 例3:範囲チェック
コード:有効な範囲内かチェック
# 有効な範囲内かチェック
value = 75
if 0 <= value <= 100:
print("有効な値です")
else:
print("範囲外の値です")
実行結果
有効な値です
💡 範囲チェックの便利な書き方
0 <= value <= 100
・Pythonでは、範囲を直感的に書けます
・これは value >= 0 and value <= 100 と同じ意味です
・「valueが0以上100以下」という意味
・数学の不等式と同じ書き方ができて便利です
🏗️ 7. ネスト(入れ子)構造
if文の中に、さらにif文を書くことができます。これをネスト(入れ子)と呼びます。
📘 ネストしたif文
コード:年齢と学生かどうかで料金判定
# 年齢と学生かどうかで料金を判定
age = 22
is_student = True
if age >= 18:
print("大人")
if is_student:
print("学生割引:800円")
else:
print("通常料金:1000円")
else:
print("子供料金:500円")
実行結果
大人 学生割引:800円
💡 ネストの構造
外側のif文:
・age >= 18 をチェック
・Trueなので「大人」と表示
内側のif文:
・外側がTrueの場合のみ実行されます
・is_studentをチェック
・Trueなので「学生割引:800円」と表示
インデントのレベル:
・外側のif文:スペース4つ
・内側のif文:スペース8つ(4+4)
⚠️ ネストは深くしすぎない
if文を何重にもネストすると、コードが読みにくくなります。
できるだけシンプルに保ちましょう。
深いネストが必要な場合は、後で学ぶ関数を使うと整理できます。
目安:ネストは2〜3階層まで
📝 練習問題
ここまで学んだことを、実際に手を動かして確認しましょう。
問題1:偶数・奇数の判定(初級)
📋 問題
変数numberに好きな数値を入れて、それが偶数か奇数かを判定して表示してください。
(ヒント:2で割った余りが0なら偶数)
解答例を見る
コード
number = 17
if number % 2 == 0:
print(f"{number}は偶数です")
else:
print(f"{number}は奇数です")
実行結果
17は奇数です
💡 ポイント
・number % 2 で2で割った余りを求めます
・余りが0なら偶数、1なら奇数です
問題2:年齢による分類(初級)
📋 問題
年齢を変数ageに入れて、以下のように分類してください:
・0〜12歳:子供
・13〜19歳:ティーンエイジャー
・20歳以上:大人
解答例を見る
コード
age = 16
if age <= 12:
print("子供")
elif age <= 19:
print("ティーンエイジャー")
else:
print("大人")
実行結果
ティーンエイジャー
問題3:BMI判定プログラム(中級)
📋 問題
身長(cm)と体重(kg)からBMIを計算し、以下のように判定してください:
BMI = 体重(kg) ÷ (身長(m) × 身長(m))
・18.5未満:やせ
・18.5以上25未満:標準
・25以上:肥満
解答例を見る
コード
# 身長と体重
height_cm = 170
weight_kg = 65
# 身長をメートルに変換
height_m = height_cm / 100
# BMIを計算
bmi = weight_kg / (height_m ** 2)
# 判定
if bmi < 18.5:
category = "やせ"
elif bmi < 25:
category = "標準"
else:
category = "肥満"
print(f"BMI: {bmi:.1f}")
print(f"判定: {category}")
実行結果
BMI: 22.5 判定: 標準
💡 ポイント
・{bmi:.1f}は小数点以下1桁で表示します
・height_m ** 2 は身長の2乗(height_m × height_m)です
問題4:合格判定プログラム(中級)
📋 問題
3科目のテスト点数を変数に入れて、以下の条件で合格・不合格を判定してください:
・平均点が60点以上で、かつ、どの科目も40点以上なら合格
・それ以外は不合格
解答例を見る
コード
# 3科目の点数
math = 75
english = 68
science = 45
# 平均点を計算
average = (math + english + science) / 3
# 判定
if average >= 60 and math >= 40 and english >= 40 and science >= 40:
print("合格")
print(f"平均点:{average:.1f}点")
else:
print("不合格")
print(f"平均点:{average:.1f}点")
if average < 60:
print("理由:平均点が60点未満")
if math < 40 or english < 40 or science < 40:
print("理由:40点未満の科目がある")
実行結果
合格 平均点:62.7点
問題5:うるう年判定プログラム(上級)
📋 問題
年を変数yearに入れて、うるう年かどうかを判定してください。
うるう年の条件:
・4で割り切れる年はうるう年
・ただし、100で割り切れる年は平年
・ただし、400で割り切れる年はうるう年
解答例を見る
コード
year = 2024
# うるう年の判定
if year % 400 == 0:
print(f"{year}年はうるう年です(400で割り切れる)")
elif year % 100 == 0:
print(f"{year}年は平年です(100で割り切れる)")
elif year % 4 == 0:
print(f"{year}年はうるう年です(4で割り切れる)")
else:
print(f"{year}年は平年です")
実行結果
2024年はうるう年です(4で割り切れる)
💡 ポイント
条件の順番が重要です。
400で割り切れるかを最初にチェックしないと、正しく判定できません。
🎯 このステップのまとめ
✅ 学んだこと
✓ if文で条件分岐ができる
✓ elseで「それ以外」の処理を書ける
✓ elifで複数の条件をチェックできる
✓ and、or、notで複数条件を組み合わせられる
✓ インデントが重要(字下げで範囲を示す)
✓ if文はネスト(入れ子)にできる
✓ ==(比較)と=(代入)の違いに注意
✓ カッコ()で優先順位を明確にできる
💡 次のステップに進む前に確認
以下のことができるようになったか確認しましょう:
□ if文を使って条件分岐できる
□ elif、elseを使える
□ and、orで複数条件を書ける
□ インデントを正しく使える
□ ==と=の違いがわかる
これらができたら、次のステップに進みましょう!
❓ よくある質問
Q1: インデントはスペース何個ですか?
A: Pythonの標準はスペース4つです。
Google Colabでは、Tabキーを押すと自動で4スペースが入ります。
スペースとタブを混在させないように注意しましょう。
Q2: if文の後のコロン(:)を忘れてしまいます
A: if、elif、elseの後には必ずコロン(:)が必要です。
これを忘れると「SyntaxError」が出ます。
慣れるまでは意識して確認しましょう。
Q3: elifはいくつでも書けますか?
A: はい、必要なだけelifを書けます。
ただし、条件が多すぎる場合は、後で学ぶ辞書や関数を使った方が読みやすいコードになることもあります。
Q4: if文の中にfor文を書けますか?
A: はい、できます。
次のステップで学ぶfor文(繰り返し)の中にif文を書いたり、その逆も可能です。
Q5: 複雑な条件を書くとエラーが出ます
A: 複雑な条件はカッコ()で区切って、一つずつ確認しましょう。
また、条件を変数に入れて名前を付けると、読みやすくデバッグしやすくなります。
# 条件を変数に入れて整理
is_adult = age >= 18
has_permission = has_ticket and has_parent
if is_adult or has_permission:
print("入場できます")
Q6: elseは必須ですか?
A: いいえ、elseは省略できます。
条件がTrueの時だけ処理をして、Falseの時は何もしないという場合は、elseを書く必要はありません。
Q7: ==と=の違いがわかりません
A:
=(イコール1つ) → 代入(値を入れる)
・例:age = 20(ageに20を入れる)
==(イコール2つ) → 比較(等しいかチェック)
・例:age == 20(ageは20と等しいか?)
if文では必ず==を使います。=を使うとエラーになります。
Q8: 範囲チェック(0 <= value <= 100)は他の言語でも使えますか?
A: いいえ、これはPython特有の便利な書き方です。
多くの他の言語では、value >= 0 and value <= 100 と書く必要があります。
Pythonの便利な機能の1つです。
学習メモ
Pythonデータ分析入門 - Step 5