コース一覧
    Python演算子・制御フロー
    if / elif / else

    Python演算子・制御フロー

    演算子と条件分岐の使い方を学び、値の比較と分岐を組み合わせた処理を実装できるようにします。

    1
    演算子と式
    01. 比較演算子15分
    02. 論理演算子15分
    03. in演算子15分
    04. 剰余と切り捨て除算15分
    05. 連鎖比較と優先順位15分
    06. 三項演算子15分
    07. つくる:予算チェック15分
    08. 第3章クイズ10分
    2
    条件分岐
    01. if文の基本15分
    02. if / elif / else15分
    03. 条件の組み合わせ15分
    04. match文15分
    05. 定番:FizzBuzz判定15分
    06. デフォルト値とor15分
    07. つくる:カテゴリ自動判定15分
    08. 第4章クイズ10分

    if / elif / else

    条件分岐のルート

    2 択で終わる判定のほうが少ない

    前回の if は、条件が成り立つか成り立たないかの 2 択でした。ところが現実の判定はもっと細かく、おこづかい帳でも「節約できている」「普通」「使いすぎ」くらいには分けたくなります。

    3 つ以上に枝分かれさせるときに使うのが elif と else です。elif は「そうでなくて、もし」という意味で、else if を縮めた言葉です。else は条件を書かず、残り全部を受け止めます。

    Python

    def bag_size(count):
        if count <= 3:
            return "小"
        elif count <= 10:
            return "中"
        else:
            return "大"

    買った点数から袋の大きさを決める関数です。elif はいくつでも並べられます。else は末尾に 1 つだけで、付けなくても構いません。if から else までの全体でひとかたまりになり、どれか 1 つだけ が実行されます。

    上で弾かれた条件は、下では前提になる

    elif の連なりでいちばん大事なのは、上から順に判定し、最初に True になったところで打ち切るという点です。下の枝がどれだけ当てはまっても、上で決まればもう見に行きません。

    bag_size(2) なら 2 <= 3 が True になった時点で "小" が返り、elif count <= 10 は 計算すらされません。

    裏を返すと、elif count <= 10 にたどり着いた時点で count が 4 以上であることは確定しています。だから elif 4 <= count <= 10 のように下限を書き足す必要はありません。書いても間違いではありませんが、条件が長くなるぶん読みにくくなります。

    解説

    上の枝を通り抜けてきたという事実が、そのまま下の枝の前提になります。これが elif を並べる最大の利点です。

    順番を逆にすると、下の枝に永遠に届かない

    広い条件を先に書くと、狭い条件は飲み込まれます。上の例で count <= 10 を先に置けば、2 も 10 以下なので "中" で確定してしまい、"小" は一度も出ません。狭い条件から先に 書きます。

    if を 3 つ並べても形は似ていますが、意味は違います。elif は「どれか 1 つだけ」が文法として保証されるのに対し、if の並びは全部の条件が評価されます。枝ごとに return するなら結果は同じですが、変数に代入する形にすると、最後に当たった枝で上書きされます。

    綴りは elif です。elseif や else if と書くと SyntaxError になります。else に条件を付けたくなったら、それは elif の出番です。

    やってみよう

    関数 spending_level(price) を実装してください。price が 500 未満なら "節約"、500 以上 2000 未満なら "普通"、2000 以上なら "使いすぎ" を返します。

    書けたら 499 500 1999 2000 の 4 つを渡して、境目がずれていないか確かめてみてください。< と <= を取り違えていると、この 4 つのどこかがずれます。

    要件

    1. 関数名は spending_level で、引数は price の 1 つ
    2. price が 500 未満なら "節約" を return する
    3. price が 500 以上 2000 未満なら "普通" を return する
    4. price が 2000 以上なら "使いすぎ" を return する
    5. if / elif / else を使い、狭い条件から先に書く

    ヒント

    if price < 500: を先頭に置くと、以降の枝では 500 以上が前提になります

    2 番目の枝は elif price < 2000: だけでよく、下限を書き足す必要はありません

    最後は else: で受けます。else に条件は書けません

    500 は「普通」側です。< と <= を取り違えないよう境界値で確かめてください

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

    関連レッスン

    • 条件の組み合わせ

      2 つの条件を同時に見るとき、if のネストと and のどちらで書くかを比べて学ぶ

    • match文

      1 つの値を複数の候補と突き合わせる match 文の書き方と、elif との使い分けを学ぶ

    • 定番:FizzBuzz判定

      FizzBuzz を 1 つの数について判定しながら、厳しい条件を先に書くという分岐の鉄則を学ぶ

    • デフォルト値とor

      未入力のカテゴリを既定値で埋めながら、空っぽの値が False 扱いになる性質と or の働きを学ぶ

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 関数処理に名前を付けて再利用できる単位
    • 評価出力品質を数値化して継続改善する活動
    • 変数データに名前をつけて参照する仕組み
    • 引数位置引数=順番で渡す。
    main.py
    エディタを読み込んでいます

    メモ

    if / elif / else

    ⌘S で保存