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:
# どれにも当てはまらないとき
Python2) 実行の流れ(ステップで理解)
例:x = 7 のとき、次のコードを考えます。
if x < 0:
print("負の数")
elif x == 0:
print("ゼロ")
elif x < 10:
print("0より大きく10未満")
else:
print("10以上")
Python処理の順番:
x < 0を評価 →7 < 0はFalse→ 次へx == 0を評価 →False→ 次へx < 10を評価 →7 < 10はTrue→ 「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) よくあるミスと注意点
- 条件の順序ミス(広い条件を先に書いてしまう)
- 範囲の端(例えば
>=と>の違い)を忘れる elifを使いたいのにifを並べてしまい「両方が実行される」バグになる- 複雑な条件を書くときは括弧で分かりやすく:
if (a and b) or c: - 真偽値や空文字列、
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("正")
PythonB(季節)解答例:
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("冬")
PythonC(時間帯)解答例:
t = int(input("時(0-23): "))
if 6 <= t <= 11:
print("おはよう")
elif 12 <= t <= 17:
print("こんにちは")
elif 18 <= t <= 23:
print("こんばんは")
else:
print("深夜です")
PythonD(百の位)解答例:
n = int(input("3桁の整数: "))
hundreds = n // 100
if hundreds == 1:
print("100台")
elif hundreds == 2:
print("200台")
else:
print("その他")
PythonE(BMI)は上の関数例を参照してください。
まとめ(初心者がまず覚えること)
elifは「順に試す追加条件」。最初に当てはまった処理だけ実行される。- 範囲判定やカテゴリ分けで強力(ただし順番に注意)。
- 複数独立にチェックしたいなら
ifを複数使う。 - 関数と組み合わせると見通しがよくなる(テストもしやすい)。
