if / elif / else
このレッスンで分かること
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 でシンプルに表現できます。elif は else 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 >= 80 が True になるので、elif score >= 90: は評価されません。正しくは厳しい条件から書きます。
Python
def grade_correct(score):
if score >= 90:
return "S"
elif score >= 80:
return "A"
else:
return "B"図の判定順序を箇条書きで書き直すと、次の通りです。
score >= 80を評価する- 真であれば
"A"を返して終了する - 偽であれば
score >= 60を評価する - 真であれば
"B"を返して終了する - すべて偽であれば
elseで"C"を返す
動きを追ってみる
本レッスンの判定は「80 点以上なら A、60 点以上なら B、それ以外は C」です。grade(85) は 85 >= 80 が True なので A、grade(70) は 70 >= 80 が False、70 >= 60 が True なので B、grade(40) は両方 False なので else に落ちて C を返します。grade(60) は境界値で、60 >= 60 が True なので 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))よくある間違い
- 条件の重なりに気付かない — 上の例のように、ゆるい条件を先に書くと厳しい条件には到達しません
elifをelse ifと書く —Pythonにはelse ifキーワードはありません。必ずelifですelseの使い忘れ — どの条件にも当てはまらない値が来るとNoneが返ってしまうので、フォールバックはelseで押さえます
「すべての枝で
returnするか、最後にelseを置く」を意識すると、戻り値の漏れが激減します。
ここまでの要点
elif は上から順に判定、最初にマッチした 1 つだけ実行。厳しい条件から先に書く。最後の else で漏れを防ぐ。
やってみよう
関数 grade(score) を完成させてください。score が 80 以上なら "A"、60 以上 80 未満なら "B"、それ未満なら "C" を返します。100、80、75、60、59、0 などのケースでテストされます。書き終わったら、elif をもう一段足して S 判定 (90 以上) を追加してみると、順序の感覚がさらに深まります。
よくある質問
Q. このトピックは Python 以外の言語でも同じ書き方ですか?
A. 考え方は他言語と共通ですが、構文や標準ライブラリは異なります。Python はインデントでブロックを表し、コロン + 改行で構造を作るのが特徴です。他言語に移行する際は基本概念を維持しつつ、構文の差分を意識して書き換えると混乱が少ないです。
Q. 実行してエラーが出た場合の対処は?
A. エラーメッセージの最後の行(TypeError や NameError などの型)から原因と該当行を確認します。Python はトレースバックが下から上に読むと「呼び出し元 → 内部」の順で辿れます。print や IDE のデバッガで途中の変数を確認すると原因が見えてきます。
Q. 次のステップで何を学ぶべきですか?
A. 本レッスンの内容を理解できたら、本文の「やってみよう」を実装し、章末クイズに進むのがおすすめです。さらに自分のミニアプリ(電卓・todo・スコア集計など)に応用するとスキルが定着します。詰まったら本文の H2 セクションに戻って読み返してください。
次のレッスン
次は match 文 で、if と elif と else を組み合わせて点数から成績を判定する関数を書く を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- if / elif / else の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. if / elif / else とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- if / elif / else を使って 3 つの分岐を書く
- 厳しい条件から順に書いて、上から評価されることを意識する
- 境界値 (80 と 60) の扱いを >= で判定する
入出力例
test-cases.txt
grade(100) → "A"
grade(80) → "A"
grade(75) → "B"
grade(60) → "B"
grade(59) → "C"
grade(0) → "C"