Step 5:条件分岐で処理を分けよう

🔀 ステップ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. 複数条件の組み合わせ

andornotを使うと、複数の条件を組み合わせられます。

🔰 論理演算子の種類

📌 論理演算子一覧

演算子 意味
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

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE