Pythonのif、elif、else文による複数条件分岐を使う方法をソースコード付きで解説します。
if文(条件分岐)
if文とは?
プログラムの「流れ(処理の順番)」をコントロールする文を制御構文といいます。
通常、プログラムは上から下へ順番に実行されますが、if文という制御構文を使ってある条件に応じて処理を分ける「条件分岐」ができます。
【書式】
if 条件式①:
処理①
elif 条件式②:
処理②
elif 条件式③:
処理③
else:
すべての条件が偽だったときの処理④
各部分の説明は以下のとおりです。
部分 | 説明 |
---|---|
if |
最初の条件をチェックします。条件式①が「True(正しい)」なら処理①を実行します。 |
elif |
「else if」の略。別の条件をチェックします。条件式②が「True(正しい)」なら処理②、条件式③が「True(正しい)」なら処理②を実行します。このように、複数の条件を書くことができます。 |
else |
すべての条件式が「正しくない(False)」場合に実行される処理です。 |
どれかの条件式が真(True)になった時点で、それ以降の条件はスキップされます。
論理型(bool型)
Pythonでは、「はい」か「いいえ」のような、2択の答えを扱うためのデータ型があります。それが「論理型(bool型)」です。
値 | 意味 | 読み方 |
---|---|---|
True |
正しい(Yes) | トゥルー |
False |
間違い(No) | フォルス |
条件式
条件式とは、「ある値や状態が特定の条件を満たしているかどうか」を判断するための式です。条件式は「True」か「False」のどちらかを返します。
if文では、条件式が「True(真)」ならその処理を実行し、「False(偽)」ならスキップします。
【例】
条件式が x == 10
だと「xが10と等しいか?」を判定します。
x = 10
のとき →True
x = 5
のとき →False
この ==
を条件演算子(比較演算子)といいます。その他、よく使う条件演算子(比較演算子)は以下のとおりです。
演算子 | 意味 | 例 | 結果 |
---|---|---|---|
== |
等しい | x == 5 |
xが5ならTrue |
!= |
等しくない | x != 5 |
xが5でなければTrue |
> |
より大きい | x > 5 |
xが6以上ならTrue |
< |
より小さい | x < 5 |
xが4以下ならTrue |
>= |
以上 | x >= 5 |
xが5以上ならTrue |
<= |
以下 | x <= 5 |
xが5以下ならTrue |
サンプルコード① 基本
以下のコードは、if文と条件式の使用例です。
job_code = 3 # 冒険者ギルドで登録された職業コード
if job_code == 1:
print("あなたは剣士です。前衛で敵を斬り伏せましょう!")
elif job_code == 2:
print("あなたは魔法使いです。炎と氷の魔法を操ります!")
elif job_code == 3:
print("あなたは盗賊です。素早さと罠解除が得意です!")
else:
print("あなたは未登録の職業です。ギルドに再登録してください。")
上記のコードを実行すると、 job_code
が3だったため、「elif job_code == 3:」のブロックだけが実行され、「あなたは盗賊です。素早さと罠解除が得意です!」という文字列を標準出力します。条件が一致した時点でその処理が実行され、以降の条件はスルーされます。
if文 + 論理演算子
論理演算子の「and(かつ)」 や 「or(または)」 を使って、複数の条件を組み合わせることができます。
演算子 | 意味 | 実行される条件 |
---|---|---|
and |
かつ | 両方がTrue |
or |
または | どちらかがTrue |
() |
優先順位 | 先に判定したい部分を囲む |
サンプルコード① and(かつ)
以下のコードは、論理演算子andの使用例です。
# プレイヤーのレベル
level = 11
# プレイヤーの職業
job = "勇者"
# レベルが10以上、かつ職業が勇者なら表示するメッセージ
if level > 10 and job == "勇者":
print("上級クエストが解放されました!")
「level > 10」と「job == “勇者”」の両方の条件式が True(真) のとき、ブロックが実行されます。
サンプルコード② or(または)
以下のコードは、論理演算子orの使用例です。
# プレイヤーのレベル
level = 9
# プレイヤーの職業
job = "勇者"
# レベルが10以上、または職業が勇者なら表示するメッセージ
if level > 10 or job == "勇者":
print("特殊クエストが解放されました!")
「level > 10」と「job == “勇者”」のどちらか1つの条件式が True(真) のとき、ブロックが実行されます。
サンプルコード③ 条件式の優先順位
以下のコードは、丸括弧 ()
で複雑な条件式を使う例です。
# プレイヤーのレベル
level = 9
# プレイヤーの職業
job = "魔法使い"
# プレミアムパスを持っているか(True:はい、False:いいえ)
has_premium_pass = True
# 「レベルが10以上かつ職業が勇者」 もしくは 「プレミアムパスを持っている」なら表示するメッセージ
if (level > 10 and job == "勇者") or has_premium_pass:
print("伝説の武器が使えるようになった!")
判定の流れを分解してみましょう。
① 先に丸括弧の中で、次のような判定が行われます。
level > 10
→False
(レベルは9)job == "勇者"
→False
(職業は魔法使い)
よって、 False and False
なので丸括弧の判定は False
となります。
② 次に or has_premium_pass
が判定されます。 has_premium_pass
は True
です。
③ 最終的な判定は、 (False) or True
で True
となり、メッセージが表示されます。
このように、複雑な条件式を使うときに丸括弧 () を使うと便利です。
if + pass文
Pythonでは、if
文で条件分岐を作ることができますが、「条件に合ったときに、まだ何もしない」という場面もあります。
そんなときに使うのが pass
文です。
書式
if 条件式:
pass
部分 | 説明 |
---|---|
if 条件式 |
条件がTrue(真)ならブロックを実行 |
pass |
何もしない(空の処理) |
pass
は「この場所に処理を書く予定だけど、今は空っぽにしておくよ」という意味の“仮置き”です。開発中のコードで、後で処理を書くつもりだけど、今は何も書かない場合などに使います。ちなみに、pass文を書かずに、if文のブロック内に何も書かなかった場合は「構文エラー」になります。
サンプルコード
enemy = "魔王"
if enemy == "魔王":
pass # 今は何もしない
print("勇者ぴこりは進み続けた")
`
このコードでは、enemy
が "魔王"
だった場合に pass
で何もせずスルーしています。
その後の print()
は通常通り実行されます。

関連ページ(もっと学びたい人へ)
Pythonの基礎から応用例まで、以下ページから学ぶことができます。

コメント