Pythonのelifをやさしく理解する
はじめての条件分岐は少しややこしく感じますよね。けれど「上から順番に当てはまるものを一つだけ選ぶ仕組み」と思えば、すっと腑に落ちます。ここでは、初心者でも迷わないように、例題たっぷりで説明します。
基本の考え方
- 役割:
ifは最初のチェック、elifは「もし最初じゃないなら次を試す」、elseは「どれにも当てはまらなかったとき」。 - 流れ: 上から順番に条件を評価して、最初に当てはまった1つだけが実行される。
- 使いどころ: 3つ以上の選択肢があるときにコードをスッキリさせる。
書き方と動き
if 条件1:
処理1
elif 条件2:
処理2
elif 条件3:
処理3
else:
処理4
Python- ポイント:
- 一度だけ実行: どれかに当てはまったら、残りは見ない。
elifはいくつでも: 必要な分だけ増やせる。elseは予備: 予想外の入力に備える避難所。
よくあるつまずき
- コロン忘れ:
if 条件:の「:」を忘れない。 - インデントずれ: 中の処理は必ず同じ幅で字下げ(半角スペース4つが一般的)。
- 順番ミス: 広い条件(例:
x >= 0)を先に書くと、狭い条件(例:x > 10)が永遠に到達しないことがある。
例題で身につける
1) テストの成績ランク分け(数値の範囲判定)
score = int(input("点数(0〜100)を入力してください: "))
if score >= 90:
print("評価: A")
elif score >= 75:
print("評価: B")
elif score >= 60:
print("評価: C")
else:
print("評価: D")
Python- 順番の理由: 上から「高い点」ほど先に判定。
score >= 90に当てはまらなければ、次の範囲へ。
2) 文字列の種類判定(複数の性質チェック)
text = input("文字列を入力してください: ")
if text.isdecimal():
print("数字だけの文字列です")
elif text.isalpha():
print("アルファベットだけの文字列です")
elif text.isalnum():
print("英数字が混ざった文字列です")
else:
print("記号などが含まれています")
Python- 考え方: 「厳しい条件(数字だけ)」→「次に厳しい(アルファベットだけ)」→「混在」→「その他」。
3) 料金計算(複数の年齢区分)
age = int(input("年齢を入力してください: "))
if age < 6:
price = 0 # 未就学は無料
elif age <= 12:
price = 300 # 小学生
elif age <= 18:
price = 500 # 中高生
else:
price = 800 # 一般
print("料金:", price, "円")
Python- コツ: 「〜以下」「〜未満」を混ぜるときは範囲が重ならないようにする。
4) シンプルな電卓(演算子で分岐)
a = float(input("数値a: "))
b = float(input("数値b: "))
op = input("演算子 (+, -, *, /): ")
if op == "+":
print(a + b)
elif op == "-":
print(a - b)
elif op == "*":
print(a * b)
elif op == "/":
if b == 0:
print("0で割ることはできません")
else:
print(a / b)
else:
print("未知の演算子です")
Python- 二段構え:
/のときだけさらに中で分岐して安全に処理。
失敗しないための整理術
- 条件を言葉で並べる: コードにする前に「Aなら…、だめならB…、それもだめならC…」と日本語で段取り。
- 狭い→広いの順: より限定的な条件を先に、一般的な条件は後ろへ。
- 共通処理は外へ: 分岐後に同じ処理をするなら、
if-elif-elseの外にまとめると読みやすい。
小さな練習問題
- 練習1(時刻で挨拶): 0〜23の時刻を入力し、
- 5〜10: 「おはよう」
- 11〜17: 「こんにちは」
- 18〜22: 「こんばんは」
- それ以外: 「夜更かしですね」
を表示するプログラムを書いてみる。
- 練習2(送料判定): 注文金額で送料を決める。
- 5000円以上: 送料0円
- 3000〜4999円: 送料200円
- 1000〜2999円: 送料400円
- それ以下: 送料600円
- 練習3(温度で服装アドバイス): 気温で提案を変える。
- 30度以上: 半袖+水分補給
- 20〜29度: 長袖薄手
- 10〜19度: セーター
- それ未満: コート
解答例と解説
いいですね!では、先ほど提示した「小さな練習問題」を一つずつ 解答例と解説 を示します。初心者向けに「なぜそう書くのか」も丁寧に説明します。
練習1:時刻で挨拶
問題: 0〜23の時刻を入力し、
- 5〜10: 「おはよう」
- 11〜17: 「こんにちは」
- 18〜22: 「こんばんは」
- それ以外: 「夜更かしですね」
解答例
hour = int(input("時刻を入力してください (0〜23): "))
if 5 <= hour <= 10:
print("おはよう")
elif 11 <= hour <= 17:
print("こんにちは")
elif 18 <= hour <= 22:
print("こんばんは")
else:
print("夜更かしですね")
Python解説
5 <= hour <= 10のように「範囲」を書けるのがPythonの便利なところ。- 条件は上から順番にチェックされるので、最初に当てはまったものだけが実行されます。
elseは「どれにも当てはまらないとき」の保険。
練習2:送料判定
問題: 注文金額で送料を決める。
- 5000円以上: 送料0円
- 3000〜4999円: 送料200円
- 1000〜2999円: 送料400円
- それ以下: 送料600円
解答例
amount = int(input("注文金額を入力してください: "))
if amount >= 5000:
shipping = 0
elif amount >= 3000:
shipping = 200
elif amount >= 1000:
shipping = 400
else:
shipping = 600
print("送料は", shipping, "円です")
Python解説
elif amount >= 3000と書けば、5000以上はすでに除外されているので「3000〜4999円」に自然に絞られます。- 条件を「範囲」で書かなくても、上から順に判定することで範囲が決まるのがポイント。
練習3:温度で服装アドバイス
問題: 気温で提案を変える。
- 30度以上: 半袖+水分補給
- 20〜29度: 長袖薄手
- 10〜19度: セーター
- それ未満: コート
解答例
temp = int(input("気温を入力してください: "))
if temp >= 30:
print("半袖+水分補給がおすすめです")
elif temp >= 20:
print("長袖薄手がおすすめです")
elif temp >= 10:
print("セーターがおすすめです")
else:
print("コートがおすすめです")
Python解説
elif temp >= 20の時点で「30以上は除外済み」なので、自然に「20〜29度」に限定されます。- 条件を「大きい方から順に」書くと、コードがシンプルになります。
総まとめ
- elifは「順番に試す」仕組み → 範囲を細かく書かなくても、上から順に判定するだけで自然に分けられる。
- elseは保険 → 想定外の入力にも対応できる。
- 条件は広いものを後ろに、狭いものを前に → そうすると漏れなく判定できる。
