条件分岐を拡張:elif文とelse文#

はじめに#

前回の記事では基本的な条件分岐である「if文」について学びました。しかし、実際のプログラムでは「もしAなら〇〇をする。もしBなら△△をする。それ以外なら□□をする」というように、複数の条件で分岐させたり、どの条件にも当てはまらない場合の処理を定義したりすることがよくあります。

この記事では、Pythonで複数の条件分岐を実装するための「elif文」と、どの条件にも当てはまらない場合の処理を定義する「else文」について学びましょう。

else文:条件に当てはまらない場合の処理#

まずは「else文」から見ていきましょう。else文は、if文で指定した条件が偽(False)の場合に実行される処理を定義します。

if 条件:
    条件が真の場合に実行する処理
else:
    条件が偽の場合に実行する処理

具体例で見てみましょう。

>
# else文の基本
age = 16

if age >= 18:
    print("成人です。")
else:
    print("未成年です。")
未成年です。

この例では、ageが18以上であれば「成人です」と表示し、そうでなければ「未成年です」と表示します。条件は1つだけなので、単純な「イエス/ノー」の二択になっています。

else文は、「それ以外の場合」を簡単に処理できる便利な構文です。else文を使うことで、以下のように条件式を2つ書く必要がなくなります。

>
# else文を使わない場合
age = 16

if age >= 18:
    print("成人です。")
if age < 18:  # これはelseで置き換えられる
    print("未成年です。")

else文を使うと、2回目の条件チェックが不要になり、コードが簡潔になります。また、条件の境界値(この例では18)を変更する場合も、1か所だけ修正すれば済むようになります。

elif文:複数の条件を順番にチェック#

次に、複数の条件を扱うための「elif文」(else ifの略)を見ていきましょう。elif文は、最初のif文の条件が偽だった場合に、別の条件をチェックするために使います。

if 条件1:
    条件1が真の場合に実行する処理
elif 条件2:
    条件1が偽で、条件2が真の場合に実行する処理
elif 条件3:
    条件1と2が偽で、条件3が真の場合に実行する処理
else:
    すべての条件が偽の場合に実行する処理

具体例を見てみましょう。

>
# elif文の基本
score = 75

if score >= 90:
    print("成績:優")
elif score >= 80:
    print("成績:良")
elif score >= 70:
    print("成績:可")
else:
    print("成績:不可")
成績:可

この例では、scoreの値に応じて異なる成績評価を表示しています。条件は上から順番にチェックされ、最初に真となった条件に対応する処理だけが実行されます。

例えば、score = 75 の場合、最初の条件 score >= 90 は偽なので、次の条件 score >= 80 を確認します。これも偽なので、さらに次の条件 score >= 70 をチェックします。この条件は真なので、「成績:可」が表示されます。そして、残りの条件(この場合はelseのみ)はチェックされません。

elifは必要な数だけ追加できます。

条件分岐の流れ#

if-elif-else文の処理の流れを図で表すと次のようになります。

  1. ifの条件をチェック → 真なら対応する処理を実行して終了
  2. 偽なら次のelifの条件をチェック → 真なら対応する処理を実行して終了
  3. すべてのelifが偽なら、elseの処理を実行(elseがあれば)

つまり、複数の条件のうち「最初に真となった条件」に対応する処理だけが実行され、残りはスキップされます。

年齢区分の例#

年齢に応じて異なるメッセージを表示する例で、if-elif-elseの使い方を確認しましょう。

>
# 年齢区分の例
age = 25

if age < 13:
    print("子供料金が適用されます。")
elif age < 18:
    print("学生料金が適用されます。")
elif age < 65:
    print("通常料金が適用されます。")
else:
    print("シニア料金が適用されます。")
通常料金が適用されます。

この例では、年齢に応じて4つの区分に分け、それぞれ異なるメッセージを表示しています。注目すべき点として、2つ目の条件は age >= 13 and age < 18 とせずに、単に age < 18 としています。それは前の条件 age < 13 が偽であることが既にわかっていて(age >= 13という意味)、そのとき限定で次の条件が評価されるからです。

複数の条件が真になる場合の注意#

複数の条件が真になるような条件分岐を書く場合、順番に注意が必要です。例えば以下の例を見てください。

>
# 条件の順番に注意
score = 95

if score >= 70:
    print("合格です!")
elif score >= 90:
    print("優秀な成績です!")
else:
    print("残念ながら不合格です。")
合格です!

この例では、score = 95 なので最初の条件 score >= 70 が真となり「合格です!」が表示されます。しかし、2つ目の条件 score >= 90 も真であり、本当は「優秀な成績です!」と表示されるべきかもしれません。

このような場合、条件の順番を変更して、より具体的な条件(範囲が狭い条件)を先に書くとよいでしょう。

>
# 修正版:より具体的な条件を先に
score = 95

if score >= 90:
    print("優秀な成績です!")
elif score >= 70:
    print("合格です!")
else:
    print("残念ながら不合格です。")
優秀な成績です!

これで、期待通り「優秀な成績です!」と表示されるようになりました。

まとめ#

この記事では、Pythonでより高度な条件分岐を実装するための「elif文」と「else文」について学びました。

  • else:if文の条件が偽の場合に実行される処理を定義
  • elif:前の条件が偽だった場合に、別の条件をチェックする
  • if-elif-elseの流れ:最初に真となった条件の処理だけが実行される
  • 条件の順序:より具体的な条件を先に書くことが重要

条件分岐は、プログラムに「判断力」を与えるために欠かせない基本的な概念です。if-elif-else構造を使いこなすことで、複雑な判断ロジックを実装できるようになります。実際のプログラミングでは、これらの条件分岐が非常に頻繁に使用されます。