Pythonのelifによる条件分岐の使い方と複数条件の処理をわかりやすく解説

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

elifの概要

複数の条件を上から順番に判定して分岐する Python予約語

elif

概要 elif(エルイフ)は、「else if」を短縮したPython特有のキーワードです。条件分岐(if 文)において、最初の条件が成り立たなかった場合に、「じゃあ、次のこの条件はどう?」と追加の条件を提示して判定を繋げていくために使用します。

わかりやすく説明 elif は、レストランの注文で「もしA定食(if)が売り切れなら、B定食(elif)にしてください。それもダメならC定食(elif)で、どれもなければ単品(else)にします」と、候補を順番に挙げていくような仕組みです。これを使うことで、3つ以上の選択肢から1つだけを選び出す処理が綺麗に書けます。

  • if で最初の条件を判定し、それが False だった場合のみ、続く elif の判定へと進みます。
  • 1つの条件分岐グループの中に、必要な数だけ何個でも elif を並べることができます。
  • 条件は上から順番に評価され、最初に True になったブロックの処理だけが実行されます。残りの elifelse はすべて見送られます。

elifの考え方をイメージで理解

elifの基本的な使い方

テストの点数(score)に応じて、4つの評価に綺麗にメッセージを出し分ける例です。

# elif を使った条件分岐
score = 75

if score >= 90:
    print("優秀!")
elif score >= 70:
    print("合格")       # 75はここを満たすため、「合格」と出力されます
elif score >= 50:
    print("再試験")
else:
    print("不合格")
  • 75 は最初の score >= 90 には当てはまらない(False)ため、2番目の elif score >= 70 へ進みます。
  • ここで True と判定されて「合格」が出力され、それ以降の「再試験」や「不合格」の判定はスキップされます。

elifを使った範囲判定

数値の大きさによって、対応するメッセージを上から順にふるいにかけていく例です。

# 気温に応じたメッセージ
temperature = 15

if temperature >= 30:
    print("暑いです")
elif temperature >= 20:
    print("ちょうどいい気温です")
elif temperature >= 10:
    print("少し肌寒いです") # 15度はここが実行されます
else:
    print("寒いです")

elifとユーザー入力・複数条件(or)の組み合わせ

ユーザーが入力した文字列を判定します。論理演算子 or を使って、複数の値を1つの elif でまとめて判定することも可能です。

# ユーザー入力による条件分岐
day = input("今日は何曜日? ")

if day == "月曜日":
    print("今週も頑張ろう!")
elif day == "金曜日":
    print("もうすぐ週末!")
elif day == "土曜日" or day == "日曜日":
    print("週末を楽しもう!")
else:
    print("普通の日ですね")

elifの実践的な使用例(信号機のシミュレート)

特定のステータスに応じて、システムの動きを切り替える実務的なコードです。どの条件にも当てはまらないケースを else で受けることで、バグや予期せぬ入力にも対応できます。

# 交通信号の色を判定
signal = "黄"

if signal == "赤":
    print("止まる")
elif signal == "黄":
    print("注意して進む") # 「注意して進む」が出力される
elif signal == "青":
    print("進む")
else:
    print("エラー:無効な信号の色です") # 「紫」などが入力された場合の保険

elifの注意点

  • 条件を書く「順番」を間違えると、下のコードが一生実行されなくなる(最重要)elif は上から順に判定され、一度 True が出るとその下の処理をすべて無視します。そのため、「条件が狭く、厳しいもの」から順番に書かなければなりません。
    # 【失敗例】順番を誤り、バグが発生するコード
    score = 95
    
    if score >= 50:
        print("再試験") # 95は50以上なので、ここで True になってしまいます!
    elif score >= 70:
        print("合格")   # 永遠に実行されません
    elif score >= 90:
        print("優秀!") # 永遠に実行されません
    
    # 【対策】数値の大きい順(厳しい条件順)に並び替える
    if score >= 90:
        print("優秀!") # 最初にここが判定されるので、正しく機能します
    elif score >= 70:
        print("合格")
    elif score >= 50:
        print("再試験")
  • elif単体では使えないelif は、必ず先頭に if があって初めて使えるキーワードです。elif から書き始めることはできません。

elifのよくある質問

Q: `elif` を使わずに、全部 `if` だけで並べたら何か問題がありますか?
A: 大問題になります。すべてを if にすると、それぞれが完全に独立した別の判定とみなされるため、複数のブロックが同時に実行されてしまったり、余計なCPUの計算が発生して処理が重くなったりします。

# 【悪い例】すべてを if にした場合(複数該当してしまう)
score = 95
if score >= 70: print("合格")   # 条件成立。画面に「合格」と出る
if score >= 90: print("優秀!") # 条件成立。画面に「優秀!」とも出てしまう

# 【正しい例】elif を使った場合(どれか1つしか動かない)
if score >= 90: print("優秀!") # ここが成立した時点で、下の判定は戦力外通告(実行されません)
elif score >= 70: print("合格")
Q: `elif` は最大で何個まで並べることができますか?
A: 文法上の上限はなく、10個でも20個でも並べられます。しかし、あまりに elif が増えすぎると、コードが縦に長くなりすぎて読みづらくなります(可読性の低下)。目安として 5個以上 になる場合は、Python 3.10 から導入された match-case 文(パターンマッチング)を使うか、辞書(dict)型を使ったマッピング処理への書き換えを検討した方がスッキリします。

まとめ

elif は、複数の選択肢の中から「これだ!」という1つのルートだけを正確に、かつ効率よく選び出すための分岐用キーワードです。

  • if 条件が満たされなかったときに、第2、第3の具体的な条件を提示して判定を続行する。
  • 条件は上から下へと一方通行で判定され、どれか1つでも合致(True)すればそれ以降の判定はすべてスキップされる。
  • 判定ミスを防ぐため、条件は必ず「厳しく、範囲が狭いもの(大きな数値など)」から順番に並べる。

プログラムに複雑なルールや採点基準、ユーザーごとの権限分けなどを実装する際、elif は100%登場します。条件の優先順位をしっかりと頭の中で整理しながら、綺麗な分岐コードを書けるようになりましょう。