Pythonの条件分岐:if, elif, else による複数の条件判定

プログラムを作成する際、「もしAなら処理1を実行し、そうでなくもしBなら処理2を実行し、それ以外なら処理3を実行する」といった、複数の条件に応じた分岐処理が必要になることが多々あります。

Pythonでは、if 文に加え、elif(else ifの略)と else を組み合わせることで、このような複雑な条件分岐を記述できます。

この記事では、3つ以上の分岐を持つ条件式の書き方と、評価の順序に関する重要なルールについて解説します。Python if-elif-else flow chartの画像

目次

基本的な構文

複数の条件を判定する場合の基本構造は以下の通りです。

if 条件式A:
    # 条件式A が True の場合に実行される処理
elif 条件式B:
    # 条件式A が False で、かつ 条件式B が True の場合に実行される処理
elif 条件式C:
    # A も B も False で、かつ 条件式C が True の場合に実行される処理
else:
    # すべての条件式が False の場合に実行される処理
  • elif: 「そうでなく、もし~なら」を意味します。必要な数だけ記述できます。
  • else: 「上記のいずれにも当てはまらない場合」を意味します。最後に1つだけ記述できます(省略も可能です)。

具体的な使用例

1. 数値の範囲による判定(成績評価)

ある数値がどの範囲に含まれるかによって処理を分ける例です。ここでは試験の点数(スコア)に応じて評価(グレード)を出力します。

score = 78

print(f"点数: {score}")

if score >= 90:
    print("評価: S (Excellent)")
elif score >= 80:
    print("評価: A (Very Good)")
elif score >= 70:
    print("評価: B (Good)")
elif score >= 60:
    print("評価: C (Average)")
else:
    print("評価: D (Failure)")

実行結果:

点数: 78
評価: B (Good)

このプログラムは上から順に条件を確認します。

  1. 78 >= 90False なので次へ。
  2. 78 >= 80False なので次へ。
  3. 78 >= 70True なので、"評価: B" を出力して全体の処理を終了します。
  4. それ以降の elifelse は無視されます。

2. 文字列の一致による判定(信号機のアクション)

数値だけでなく、文字列の状態に応じた分岐も可能です。

traffic_light = "yellow"

if traffic_light == "green":
    print("進んでください。")
elif traffic_light == "yellow":
    print("停止してください。(安全に停止できない場合を除く)")
elif traffic_light == "red":
    print("停止してください。")
else:
    print("信号機のエラーです。")

実行結果:

停止してください。(安全に停止できない場合を除く)

判定順序の重要性

ifelif 構造において最も重要なのは、**「条件は上から順番に評価され、最初に真(True)になったブロックだけが実行される」**という点です。

条件の記述順序を間違えると、意図しない結果になることがあります。

誤った例

例えば、会員ランクを判定する際、条件の厳しい「プラチナ会員(購入額10万円以上)」よりも先に、条件の緩い「ゴールド会員(購入額5万円以上)」を判定してしまうとどうなるでしょうか。

total_purchase = 150000 # 15万円購入

# 悪い例: 条件の順序が不適切
if total_purchase >= 50000: # 5万円以上
    print("ゴールド会員です。")
elif total_purchase >= 100000: # 10万円以上
    print("プラチナ会員です。")
else:
    print("通常会員です。")

実行結果:

ゴールド会員です。

本来は「プラチナ会員」と判定されるべきですが、最初の total_purchase >= 50000True になってしまうため、そこで処理が確定してしまいました。

正しい例

範囲を判定する場合は、条件が厳しい(範囲が狭い)ものから先に記述する必要があります。

# 良い例: 条件が厳しい順に記述
if total_purchase >= 100000: # 先に10万円以上をチェック
    print("プラチナ会員です。")
elif total_purchase >= 50000:
    print("ゴールド会員です。")
else:
    print("通常会員です。")

実行結果:

プラチナ会員です。

まとめ

  • 3つ以上の分岐には if, elif, else を使用します。
  • elif はいくつでも追加でき、else は最後に1回だけ記述します(省略可)。
  • 条件は上から順に評価され、一度 True になるとそれ以降の条件は無視されます。
  • 条件式の順序(特に数値の範囲判定)には注意が必要です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次