複数の条件を扱うelif文
Pythonでは、条件分岐を行う際にif
文とelse
文だけでなく、追加の条件を指定するためにelif
文を用いることができます。elif
を使うことでコードの可読性を向上させ、多くの条件を扱う処理を分かりやすく記述できるようになります。本記事では、複数の条件分岐がある場合にelif
を用いて効率的なコードを書く方法と、初心者が気をつけるべきポイントを分かりやすく解説します。
if ~ elif ~ else の基本構造
まずは基本的な構文を確認しましょう。Pythonで複数の条件を分岐したいときは、以下のようにif
、elif
、else
を組み合わせます。
if 条件A:
# 条件Aが真(True)の場合に実行する処理
elif 条件B:
# 条件Aが偽(False)で、かつ条件Bが真の場合に実行する処理
elif 条件C:
# 条件Aと条件Bが偽で、かつ条件Cが真の場合に実行する処理
else:
# すべての条件が偽の場合に実行する処理
if
で第一の条件を判定し、それが偽の場合は次のelif
を順番に評価していきます。最終的にすべてのif
・elif
条件が偽なら、else
以下の処理が実行される仕組みです。
elifを使うメリット
複数の条件を分岐する際、if
文を複数書いても同様の動作はできますが、elif
を使うことで次のようなメリットがあります。
- コードが読みやすくなる: 1つの
if
ブロックの中で条件をまとめて表現するため、ネストが深くなりにくく、可読性が向上します。 - 無駄な評価を避けられる: 先に書いた条件が真の場合、それ以降の
elif
やelse
はスキップされます。余計な条件チェックが行われなくなるので、コードの見通しがよくなります(ただしパフォーマンスはごく小さな差であることが多いです)。 - バグを防ぎやすい: 条件を1つの
if
文で連鎖的に書けるので、処理の流れが明確になり、ロジック上のミスを見つけやすいです。
具体例:数値による条件分岐
たとえばテストの得点によって、判定を変える簡単なプログラムを考えます。数値score
が以下の範囲に応じて評価を返すコードを書いてみましょう。
- 80点以上:
"Excellent"
- 60点以上80点未満:
"Good"
- 40点以上60点未満:
"Fair"
- 40点未満:
"Fail"
score = 75
if score >= 80:
print("Excellent")
elif score >= 60:
print("Good")
elif score >= 40:
print("Fair")
else:
print("Fail")
このコードでは、最初にscore >= 80
かどうかを判定し、真ならExcellent
と表示して終了します。偽の場合は次のelif score >= 60
をチェックして、そこでも偽の場合はさらにelif score >= 40
をチェックします。どれにも該当しなければelse
ブロックのFail
が表示されます。
このようにelif
を使うと、各条件を順番に確認して処理を分岐させるロジックを簡潔にまとめられます。また、複数の条件がある場合でも、似た条件式をまとまりとして整理しやすいのが利点です。
文字列やリストに対する条件分岐
条件式には、数値だけでなく文字列やリスト、その他のオブジェクトに対する評価式を書くこともできます。たとえば、ユーザーの入力したコマンドによって異なる処理を行うケースを考えてみましょう。
command = input("コマンドを入力してください(start/stop/restart): ")
if command == "start":
print("アプリケーションを起動します")
elif command == "stop":
print("アプリケーションを停止します")
elif command == "restart":
print("アプリケーションを再起動します")
else:
print("不明なコマンドです")
ユーザーが入力した文字列をcommand
変数に代入し、if
とelif
を使ってコマンドを判定しています。もしstart
、stop
、restart
のいずれでもなければelse
に入ってメッセージを表示する仕組みです。必要に応じてさらにelif
を増やすことで、多彩なコマンドをサポートできます。
ネストを減らすテクニック
ネスト(入れ子)の多いif
文は、初心者だけでなく上級者にとっても読みにくいコードになりがちです。elif
を活用し、適切に条件を並べることでネストを浅く保ち、可読性を高めることができます。以下は、if
を重ねて書く(ネストする)ケースと、elif
を使ったケースの比較例です。
# ネストが深い例
score = 75
if score >= 80:
print("Aランク")
else:
if score >= 60:
print("Bランク")
else:
if score >= 40:
print("Cランク")
else:
print("Dランク")
# elifを使ってスッキリ書いた例
if score >= 80:
print("Aランク")
elif score >= 60:
print("Bランク")
elif score >= 40:
print("Cランク")
else:
print("Dランク")
同じ処理を行う場合でも、elif
を使うことで条件の流れが読みやすくなります。特に処理が複雑になってくると、このようなコードスタイルの差が大きく影響します。
複数条件を一度に評価する場合
単にelif
を重ねるだけでなく、and
やor
といった論理演算子を組み合わせて1つのif
文内で複数の条件をまとめることも可能です。ただし、それが長くなりすぎると読みづらくなる場合があります。適度にelif
を挟み、条件を区切ることで可読性を維持しましょう。
たとえば、年齢age
と会員ステータスis_member
を同時に判定して割引率を設定するようなケースでは、以下のように書くことができます。
age = 20
is_member = True
if age < 18:
print("未成年割引が適用されます")
elif age >= 60:
print("シニア割引が適用されます")
elif is_member:
print("会員割引が適用されます")
else:
print("一般料金です")
この例では、age < 18
(未成年割引)、age >= 60
(シニア割引)のどちらにも当てはまらない場合のみis_member
がチェックされ、真なら会員割引、それ以外は一般料金と分岐しているのがわかります。
初心者が気をつけるポイント
- 条件式をシンプルに保つ:
elif
と論理演算子を組み合わせて複雑になりすぎると読みにくくなります。可能であれば条件を分割し、elif
ブロックを増やすことを検討しましょう。 - インデントに注意: Pythonではインデントが意味を持ちます。
if
、elif
、else
が同じブロックレベルであるように正確にインデントを揃えましょう。 - 条件の順序:
if
とelif
の評価は上から順に行われます。より厳しい条件や特殊なケースを先に書くと、後続の条件が無駄に評価されなくなる場合があります。 - 無駄な
else
を避ける: 場合によってはelse
を使わず、すべてelif
だけで完結する方が意図が明確になることもあります。処理フローを意識してどちらがわかりやすいかを選びましょう。
まとめ
この記事では、複数の条件を扱う際にelif
を用いる方法について解説しました。elif
を使うことで、複数の条件分岐を連続的かつ読みやすく書くことができ、ネストを減らしてバグを防止しやすくなります。if
文を学習している初心者にとって、elif
を正しく使いこなすことは、より複雑なロジックを扱う第一歩です。
特に「条件の順序」や「コードの可読性」を考慮する習慣を身につけると、将来より大きなプログラムを書くときに役立ちます。ぜひコードを実際に書きながらelif
の使い方をマスターしてみてください。