if / elif / else

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • if / elif / else で 3 つ以上の枝を上から順に判定できます
  • 最初に True になった枝だけが実行され、以降の elif は評価されません
  • 最小例は if score >= 80: ...elif score >= 60: ...else: ...

if / elif / else とは

if と elif と else を組み合わせて点数から成績を判定する関数を書く。本レッスンでは、if / elif / else の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

if / elif / else

「80 点以上なら A、60 点以上なら B、それ以外は C」のように、3 つ以上に枝分かれする判定を書きたい場面は山ほどあります。Python ではこの多段分岐を if / elif / else でシンプルに表現できます。elifelse if を 1 語にまとめた専用キーワードで、条件分岐を上から順に評価しながら、最初に True になった枝だけを実行します。本レッスンでは、点数 (int) を受け取って成績 (str) を返す関数 grade を書きながら、elif の振る舞いをしっかり押さえます。

elif は連結された if のように見えるが、実際は最初にマッチした 1 つしか通らない、というのがポイントです。

elif がない世界を想像する

elif を使わずに 3 段階の判定を書くと、次のようにネストが深くなります。

Python

def grade_nested(score): if score >= 80: return "A" else: if score >= 60: return "B" else: return "C"

これでも動きますが、段数が増えるほどインデントが深くなり、見るのも書くのも辛くなります。そこで elif の出番です。同じロジックを次のように 1 段で書けます。

Python

def grade(score): if score >= 80: return "A" elif score >= 60: return "B" else: return "C"

上から順に条件が評価され、最初に True になった枝だけが実行されます。return で関数自体が終わるので、後続の elif は評価すらされません。

ネストは正義ではありません。elif で並べて書ける構造は、できるだけ並べた方が読みやすくなります。

評価される順番に注意

elif は上から順に評価されるため、条件の書く順番が結果を左右します。たとえば「90 点以上は S、80 点以上は A」と書きたいのに次のように並べると、95 点でも A になってしまいます。

Python

def grade_wrong(score): if score >= 80: return "A" elif score >= 90: return "S"

score = 95 のとき、最初の score >= 80True になるので、elif score >= 90: は評価されません。正しくは厳しい条件から書きます。

Python

def grade_correct(score): if score >= 90: return "S" elif score >= 80: return "A" else: return "B"
diagram (will load when visible)

図の判定順序を箇条書きで書き直すと、次の通りです。

  1. score >= 80 を評価する
  2. 真であれば "A" を返して終了する
  3. 偽であれば score >= 60 を評価する
  4. 真であれば "B" を返して終了する
  5. すべて偽であれば else"C" を返す

動きを追ってみる

本レッスンの判定は「80 点以上なら A、60 点以上なら B、それ以外は C」です。grade(85)85 >= 80True なので Agrade(70)70 >= 80False70 >= 60True なので Bgrade(40) は両方 False なので else に落ちて C を返します。grade(60) は境界値で、60 >= 60True なので B です。「以上」と「より大きい」の違いはバグの定番なので、>=> を意識して使い分けましょう。

代表的な入力ごとの戻り値は次の通りです。

入力結果
100"A"
80"A"
75"B"
60"B"
59"C"
0"C"

Python

def grade(score): if score >= 80: return "A" elif score >= 60: return "B" else: return "C" print(grade(85)) print(grade(60)) print(grade(0))

よくある間違い

  1. 条件の重なりに気付かない — 上の例のように、ゆるい条件を先に書くと厳しい条件には到達しません
  2. elifelse if と書くPython には else if キーワードはありません。必ず elif です
  3. else の使い忘れ — どの条件にも当てはまらない値が来ると None が返ってしまうので、フォールバックは else で押さえます

「すべての枝で return するか、最後に else を置く」を意識すると、戻り値の漏れが激減します。

この章のポイント

ここまでの要点 elif は上から順に判定、最初にマッチした 1 つだけ実行。厳しい条件から先に書く。最後の else で漏れを防ぐ。

やってみよう

関数 grade(score) を完成させてください。score が 80 以上なら "A"、60 以上 80 未満なら "B"、それ未満なら "C" を返します。100807560590 などのケースでテストされます。書き終わったら、elif をもう一段足して S 判定 (90 以上) を追加してみると、順序の感覚がさらに深まります。

よくある質問

Q. このトピックは Python 以外の言語でも同じ書き方ですか?

A. 考え方は他言語と共通ですが、構文や標準ライブラリは異なります。Python はインデントでブロックを表し、コロン + 改行で構造を作るのが特徴です。他言語に移行する際は基本概念を維持しつつ、構文の差分を意識して書き換えると混乱が少ないです。

Q. 実行してエラーが出た場合の対処は?

A. エラーメッセージの最後の行(TypeError や NameError などの型)から原因と該当行を確認します。Python はトレースバックが下から上に読むと「呼び出し元 → 内部」の順で辿れます。print や IDE のデバッガで途中の変数を確認すると原因が見えてきます。

Q. 次のステップで何を学ぶべきですか?

A. 本レッスンの内容を理解できたら、本文の「やってみよう」を実装し、章末クイズに進むのがおすすめです。さらに自分のミニアプリ(電卓・todo・スコア集計など)に応用するとスキルが定着します。詰まったら本文の H2 セクションに戻って読み返してください。

次のレッスン

次は match 文 で、if と elif と else を組み合わせて点数から成績を判定する関数を書く を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. if / elif / else の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. if / elif / else とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. if / elif / else を使って 3 つの分岐を書く
  2. 厳しい条件から順に書いて、上から評価されることを意識する
  3. 境界値 (80 と 60) の扱いを >= で判定する

入出力例

test-cases.txt

grade(100)"A" grade(80)"A" grade(75)"B" grade(60)"B" grade(59)"C" grade(0)"C"

ヒント

main.py
main.py
学習モード

メモ

if / elif / else

⌘S で保存