Python | elif 節

Python
スポンサーリンク

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 として独立させる。
n = int(input("数値: "))

# 両方当てはまれば両方表示したいケース
if n % 2 == 0:
    print("偶数")
if n % 3 == 0:
    print("3の倍数")
Python

使い分けのコツ

  • 1つだけ選ぶとき: ifelifelse(カテゴリ分け、等級、料金など)。
  • 複数該当あり得るとき: 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 を使う
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました