複数の条件を扱うelif文

複数の条件を扱うelif文

Pythonでは、条件分岐を行う際にif文とelse文だけでなく、追加の条件を指定するためにelif文を用いることができます。elifを使うことでコードの可読性を向上させ、多くの条件を扱う処理を分かりやすく記述できるようになります。本記事では、複数の条件分岐がある場合にelifを用いて効率的なコードを書く方法と、初心者が気をつけるべきポイントを分かりやすく解説します。

if ~ elif ~ else の基本構造

まずは基本的な構文を確認しましょう。Pythonで複数の条件を分岐したいときは、以下のようにifelifelseを組み合わせます。


if 条件A:
    # 条件Aが真(True)の場合に実行する処理
elif 条件B:
    # 条件Aが偽(False)で、かつ条件Bが真の場合に実行する処理
elif 条件C:
    # 条件Aと条件Bが偽で、かつ条件Cが真の場合に実行する処理
else:
    # すべての条件が偽の場合に実行する処理

ifで第一の条件を判定し、それが偽の場合は次のelifを順番に評価していきます。最終的にすべてのifelif条件が偽なら、else以下の処理が実行される仕組みです。

elifを使うメリット

複数の条件を分岐する際、if文を複数書いても同様の動作はできますが、elifを使うことで次のようなメリットがあります。

  1. コードが読みやすくなる: 1つのifブロックの中で条件をまとめて表現するため、ネストが深くなりにくく、可読性が向上します。
  2. 無駄な評価を避けられる: 先に書いた条件が真の場合、それ以降のelifelseはスキップされます。余計な条件チェックが行われなくなるので、コードの見通しがよくなります(ただしパフォーマンスはごく小さな差であることが多いです)。
  3. バグを防ぎやすい: 条件を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変数に代入し、ifelifを使ってコマンドを判定しています。もしstartstoprestartのいずれでもなければ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を重ねるだけでなく、andorといった論理演算子を組み合わせて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ではインデントが意味を持ちます。ifelifelseが同じブロックレベルであるように正確にインデントを揃えましょう。
  • 条件の順序: ifelifの評価は上から順に行われます。より厳しい条件や特殊なケースを先に書くと、後続の条件が無駄に評価されなくなる場合があります。
  • 無駄なelseを避ける: 場合によってはelseを使わず、すべてelifだけで完結する方が意図が明確になることもあります。処理フローを意識してどちらがわかりやすいかを選びましょう。

まとめ

この記事では、複数の条件を扱う際にelifを用いる方法について解説しました。elifを使うことで、複数の条件分岐を連続的かつ読みやすく書くことができ、ネストを減らしてバグを防止しやすくなります。if文を学習している初心者にとって、elifを正しく使いこなすことは、より複雑なロジックを扱う第一歩です。

特に「条件の順序」や「コードの可読性」を考慮する習慣を身につけると、将来より大きなプログラムを書くときに役立ちます。ぜひコードを実際に書きながらelifの使い方をマスターしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です