Python | elif 節

Python
スポンサーリンク

elifは、if の「それ以外の条件」の分岐を順番に書くための仕組みです。初心者がまず抑えるべきポイントを、例題・図解(言葉で)・注意点・練習問題つきでわかりやすく説明します。


1) 基本イメージ(超かんたん)

  • if が「最初のチェック」です。
  • elif は「if が false のときに次に試すチェック」を順に書きます。
  • 最初に True になったブロックだけ実行して、以降はスキップされます。
  • 最後に else を書けば「どの条件にも当てはまらない場合」の処理になります。
if 条件A:
    # A のときだけここを実行
elif 条件B:
    # 条件Aが False で、条件B が True のときここを実行
elif 条件C:
    # 条件A,B が False で、条件C が True のときここを実行
else:
    # どれにも当てはまらないとき
Python

2) 実行の流れ(ステップで理解)

例:x = 7 のとき、次のコードを考えます。

if x < 0:
    print("負の数")
elif x == 0:
    print("ゼロ")
elif x < 10:
    print("0より大きく10未満")
else:
    print("10以上")
Python

処理の順番:

  1. x < 0 を評価 → 7 < 0False → 次へ
  2. x == 0 を評価 → False → 次へ
  3. x < 10 を評価 → 7 < 10True → 「0より大きく10未満」を表示して 終了
    (以降の else は評価しません)

3) 例題 1 — 正の/負の/ゼロを判定する

x = int(input("整数を入力してください: "))

if x > 0:
    print("正の数です")
elif x == 0:
    print("ゼロです")
else:
    print("負の数です")
Python

ポイント:

  • >== の順番は、意味に従って自然に書くだけでOK。
  • elif があるから、x が 0 のとき「正でも負でもない」ことを正確に扱える。

4) 例題 2 — 成績判定(範囲に注意!順序が重要)

score = int(input("点数を入力: "))

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print("評定:", grade)
Python

なぜこの順序か:

  • まず >= 90 をチェックして真なら A を確定。もし逆に elif score >= 60 を先に書くと、90 も 60 以上なので誤判定します。
    「広い条件」を先に書くとダメ。狭い(高優先度)条件を先に

5) 例題 3 — 文字列の種類を判定(isdecimal, isalpha)

s = input("文字列を入力: ")

if s.isdecimal():
    print("数字だけです")
elif s.isalpha():
    print("アルファベット(または文字)だけです")
else:
    print("混合か記号などです")
Python

補足:

  • .isalpha() は日本語の文字(ひらがな/カタカナ/漢字)も True になったりするので、多言語扱うときは注意。

6) 実践的な例 — 関数化して入力チェック付きの BMI 判定(if + elif + 関数)

def calc_bmi(height_cm, weight_kg):
    h = height_cm / 100
    return weight_kg / (h * h)

def bmi_category(bmi):
    if bmi < 18.5:
        return "低体重"
    elif bmi < 25:
        return "普通体重"
    elif bmi < 30:
        return "肥満(1度)"
    else:
        return "肥満(2度以上)"

# メイン
try:
    h = float(input("身長(cm)を入力: "))
    w = float(input("体重(kg)を入力: "))
    bmi = calc_bmi(h, w)
    print(f"BMI: {bmi:.1f}{bmi_category(bmi)}")
except ValueError:
    print("数値を正しく入力してください。")
Python

ポイント:

  • 関数で処理を分けると読みやすく、テストもしやすい。
  • elif は連続した範囲判定に便利(上限だけで判定)。

7) if を並べる(複数独立チェック) vs elif(排他的チェック)

  • 複数の独立した条件すべてをチェックしたいときは if を複数書きます:
# 複数のフラグを全部チェックしたいとき
if condA:
    # A の処理
if condB:
    # B の処理
Python
  • 一方、「どれか一つを選びたい」(排他的)なら if / elif / else を使います。
    例:年齢によって「子ども/大人」を 1つだけ表示したいときは elif を使う。

8) よくあるミスと注意点

  1. 条件の順序ミス(広い条件を先に書いてしまう)
  2. 範囲の端(例えば >=> の違い)を忘れる
  3. elif を使いたいのに if を並べてしまい「両方が実行される」バグになる
  4. 複雑な条件を書くときは括弧で分かりやすく:if (a and b) or c:
  5. 真偽値や空文字列、None の扱い(空文字は False 扱い)に注意

9) 練習問題(自分で手を動かしてみよう)

短い問題と解答(下にまとめてあります):

問題 A — 整数を入力して、負/ゼロ/正を表示するプログラムを書け。
問題 B — 月(1〜12)を入力して季節(春・夏・秋・冬)を表示する。
問題 C — 時刻(0〜23)を入力して「おはよう」「こんにちは」「こんばんは」を表示する(例:0–5 夜、6–11 朝、12–17 昼、18–23 夕)。
問題 D — 3 桁の整数を入力して、百の位が 1 なら「100台」、2 なら「200台」、それ以外なら「その他」。
問題 E — BMI を計算して、上の BMI 判定関数を使って結果を表示(入力チェック付き)。


10) 練習問題の解答

A 解答例:

x = int(input())
if x < 0:
    print("負")
elif x == 0:
    print("ゼロ")
else:
    print("正")
Python

B(季節)解答例:

m = int(input("月: "))
if m in (3,4,5):
    print("春")
elif m in (6,7,8):
    print("夏")
elif m in (9,10,11):
    print("秋")
else:
    print("冬")
Python

C(時間帯)解答例:

t = int(input("時(0-23): "))
if 6 <= t <= 11:
    print("おはよう")
elif 12 <= t <= 17:
    print("こんにちは")
elif 18 <= t <= 23:
    print("こんばんは")
else:
    print("深夜です")
Python

D(百の位)解答例:

n = int(input("3桁の整数: "))
hundreds = n // 100
if hundreds == 1:
    print("100台")
elif hundreds == 2:
    print("200台")
else:
    print("その他")
Python

E(BMI)は上の関数例を参照してください。


まとめ(初心者がまず覚えること)

  • elif は「順に試す追加条件」。最初に当てはまった処理だけ実行される。
  • 範囲判定やカテゴリ分けで強力(ただし順番に注意)。
  • 複数独立にチェックしたいなら if を複数使う。
  • 関数と組み合わせると見通しがよくなる(テストもしやすい)。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました