Python の elif を初心者向けにやさしく解説
はじめての条件分岐は少しややこしく感じるもの。ここでは、if/elif/else の「順番に試す」仕組みを、つまずきやすいポイントと例題を交えて丁寧に説明します。
基本の考え方
- 役割:
ifは「最初のチェック」、elifは「次のチェック」、elseは「どれにも当てはまらないとき」。 - 流れ: 上から順に条件を評価し、最初に当てはまった1つだけが実行される。
- イメージ: 「Aならこれ。だめならB。それもだめならC。」という三段構え。
if 条件A:
処理A
elif 条件B:
処理B
else:
処理C # AでもBでもないとき
Pythonよくあるつまずきポイント
- コロン忘れ: 行末の
:を忘れるとエラー。 - インデントずれ: 処理は必ず同じ段で字下げ(半角スペース4つが基準)。
- 順番ミス: より「狭い条件」を先に書くと意図どおりに動きやすい。
- 複数ヒットの誤解: どれか1つに当てはまったら、そこで終了。他の
elifは実行されない。 - 別々の if と混同: 「全部チェックしたい」なら
ifを複数並べる。「どれか1つだけ」ならif/elif/else。
例題で理解する
例1: 点数で成績をつける
- 狙い: 範囲に応じてラベルを1つだけつける。
score = int(input("点数を入力してください(0〜100): "))
if score >= 90:
print("評価: A")
elif score >= 70:
print("評価: B")
elif score >= 50:
print("評価: C")
else:
print("評価: D")
Python- ポイント: 上から「高い条件」ほど先に書くことで、90点はAで止まり、BやCまで降りない。
例2: 年齢で料金を分ける
- 狙い: 境界条件の順番に注意する練習。
age = int(input("年齢を入力してください: "))
if age < 6:
print("料金: 無料(未就学)")
elif age < 12:
print("料金: 子ども料金")
elif age < 65:
print("料金: 大人料金")
else:
print("料金: シニア料金")
Python- ポイント: 「〜未満」を上から小さい順に並べると、重なりなくきれいに分岐できる。
例3: 文字の種類を判定する
- 狙い: 文字列メソッドと組み合わせて実用的に。
text = input("文字列を入力してください: ")
if text.isdecimal():
print("これは数字です")
elif text.isalpha():
print("これはアルファベットです")
else:
print("数字でもアルファベットでもありません")
Python- ポイント:
elifで「次の可能性」を順番に試し、どれにも当てはまらないときだけelse。
ありがちな誤りと直し方
- 誤り: 広い条件を先に書いてしまう
- 例: 先に
score >= 50を書くと、90点でもそこで止まりAにならない。 - 直し方: より高い(厳しい)条件から順番に並べる。
- 例: 先に
- 誤り: すべて判定したいのに
elifを使う- 例: 「偶数なら表示」「3の倍数なら表示」を両方出したいのに
elifにすると片方しか出ない。 - 直し方: それぞれを別の
ifとして独立させる。
- 例: 「偶数なら表示」「3の倍数なら表示」を両方出したいのに
n = int(input("数値: "))
# 両方当てはまれば両方表示したいケース
if n % 2 == 0:
print("偶数")
if n % 3 == 0:
print("3の倍数")
Python使い分けのコツ
- 1つだけ選ぶとき:
if→elif→else(カテゴリ分け、等級、料金など)。 - 複数該当あり得るとき:
ifを複数(タグ付け、注意事項の積み上げなど)。 - 読みやすさ重視: 条件は「重ならない」「上から順に狭くなる」並びにする。
- else の使いどころ: 想定外入力の受け皿。エラーメッセージやデフォルト処理を置く。
練習問題
- 問題1: 気温を入力してメッセージを表示
- 30以上: 「暑い」
- 20以上30未満: 「ちょうどいい」
- 10以上20未満: 「肌寒い」
- 10未満: 「寒い」
- 問題2: 時間(0〜23)で挨拶を変える
- 5〜11: 「おはよう」
- 12〜17: 「こんにちは」
- 18〜22: 「こんばんは」
- それ以外: 「深夜です」
- 問題3: ショッピングの割引
- 会員かつ1万円以上: 「15%割引」
- 会員のみ: 「5%割引」
- 非会員かつ1万円以上: 「3%割引」
- それ以外: 「割引なし」
ヒント(問題3の条件の並べ方):
is_member = input("会員ですか?(y/n): ") == "y"
amount = int(input("購入金額(円): "))
if is_member and amount >= 10000:
print("15%割引")
elif is_member:
print("5%割引")
elif amount >= 10000:
print("3%割引")
else:
print("割引なし")
Pythonまとめ
- elif は「次の条件を順番に試すための橋渡し」。
- 最初に当てはまった1つだけが実行される。
- 並べる順番(広い・狭い)に気をつけると、意図どおりに動く。
- 全部判定したいなら、elif ではなく複数の if を使う。
