このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】elif節を伴うif文

elif節を伴うif文
if文にelif節を加えることで、複数の条件を順次評価し、条件に応じた異なる処理を実行することが可能となります。Pythonでは、if節、複数のelif節、そして必要に応じてelse節を組み合わせることで、プログラムの実行フローを柔軟に制御できます。ここでは、elif節を伴うif文の基本構文、処理の流れ、そして実践的な使用例について詳しく解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.if文とelif節の基本概念
1.1. 基本構文
if文は、条件式がTrueの場合にブロック内の文を実行します。elif節は、最初の条件がFalseの場合に次の条件式を評価し、Trueならそのブロックを実行します。基本的な構文は次の通りです。
if 条件式A:
文A1
文A2
elif 条件式B:
文B1
文B2
else:
文C1
解説
- 条件式AがTrueなら、文A1および文A2が実行され、他の節はスキップされます。
- 条件式AがFalseの場合、次に条件式Bが評価され、Trueなら文B1と文B2が実行されます。
- すべての条件がFalseの場合は、else節の文C1が実行されます。
- 各節のブロックは、コロン(:)の後に改行し、同じインデント幅(標準では空白4個)で記述します。
1.2. 複数のelif節の利用
elif節は必要に応じて複数並べることができ、上から順に評価され、最初にTrueとなった条件のブロックが実行されます。以下は、複数のelif節を用いた例です。
if 条件式A:
文A
elif 条件式B:
文B
elif 条件式C:
文C
else:
文D
解説
- まず条件式Aが評価され、Trueなら文Aが実行され、以降の条件は評価されません。
- 条件式AがFalseの場合、条件式Bが評価され、Trueなら文Bが実行されます。
- さらに両方ともFalseの場合、条件式Cが評価され、Trueなら文Cが実行されます。
- 全てFalseの場合は、else節の文Dが実行されます。
2.実践例:チケット番号による賞品判定プログラム
2.1. プログラム概要
ここでは、ユーザにチケット番号を入力させ、その番号に応じて賞品を判定するプログラムを作成します。具体的な条件は以下の通りです。
- 変数
ticket
が"987654"
に等しければ「Grand Prize: Vacation」と表示 ticket
が"987654"
ではなく、下4桁が"4321"
に等しければ「Second Prize: Laptop」と表示ticket
が上記の条件に該当せず、下3桁が"111"
に等しければ「Third Prize: Headphones」と表示- どの条件にも該当しなければ「Try Again」と表示
2.2. プログラム例と構文の説明
サンプルプログラム
# チケット番号をキーボードから入力し、変数ticketに格納する
ticket = input("Ticket Number: ")
# 入力されたチケット番号に基づき賞品を判定する条件分岐
if ticket == "987654":
print("Grand Prize: Vacation")
elif ticket[-4:] == "4321":
print("Second Prize: Laptop")
elif ticket[-3:] == "111":
print("Third Prize: Headphones")
else:
print("Try Again")
実行結果
Ticket Number: 114321
Second Prize: Laptop
解説
input("Ticket Number: ")
は、ユーザに「Ticket Number:」というプロンプトを表示し、1行分の文字列を取得して変数ticket
に格納します。if ticket == "987654":
では、入力されたチケット番号が完全に"987654"
と一致するかを確認し、Trueの場合は"Grand Prize: Vacation"
を出力します。elif ticket[-4:] == "4321":
は、条件がFalseだった場合に実行され、文字列のスライスticket[-4:]
を使って下4桁を抽出し、これが"4321"
と等しいかどうかを評価します。- 同様に、
elif ticket[-3:] == "111":
は、下3桁を抽出して条件を判定します。 - どの条件もTrueでなければ、else節の
"Try Again"
が出力されます。 - このように、複数のelif節を連続して記述することで、複数の条件分岐を順次評価し、最初にTrueとなった条件のブロックのみが実行される仕組みとなります。
下記の表は、上記プログラムの条件分岐の流れと対応する賞品の一覧をまとめたものです。
条件 | コード例 | 出力例 |
---|---|---|
完全一致 | if ticket == "987654": | Grand Prize: Vacation |
下4桁の一致 | elif ticket[-4:] == "4321": | Second Prize: Laptop |
下3桁の一致 | elif ticket[-3:] == "111": | Third Prize: Headphones |
どの条件にも該当しない場合 | else: | Try Again |
まとめ
elif節を伴うif文は、複数の条件を順次評価して、最初に成立した条件に応じた処理を実行するための強力な制御構造です。
- 基本構文: if条件式: ブロック、elif条件式: ブロック、else: ブロックと記述し、各ブロックはインデントで区切ります。
- 複数の条件分岐: 複数のelif節を用いることで、より細かい条件分岐が実現でき、条件に応じた多様な処理を記述できます。
- 実践例: チケット番号による賞品判定プログラムは、if文と複数のelif節、さらにelse節を組み合わせた実用的な例であり、ユーザ入力に基づいた動的な処理の流れを理解するのに役立ちます.
これらの知識を活かして、複雑な条件分岐を含むプログラムを効率的に作成し、ユーザの入力やプログラムの状態に応じた柔軟な処理を実現しましょう。