【Python超入門】if、elif、else文の使い方(練習問題あり)

Pythonのif、elif、else文による複数条件分岐を使う方法をソースコード付きで解説します。

if文(条件分岐)

if文とは?

プログラムの「流れ(処理の順番)」をコントロールする文を制御構文といいます。
通常、プログラムは上から下へ順番に実行されますが、if文という制御構文を使ってある条件に応じて処理を分ける「条件分岐」ができます。

RPGだと「プレイヤーの選択によって物語が分岐する」ような処理を実装できます。

【書式】

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 > 10False(レベルは9)
  • job == "勇者"False(職業は魔法使い)

よって、 False and False なので丸括弧の判定は False となります。

② 次に or has_premium_pass が判定されます。 has_premium_passTrueです。

③ 最終的な判定は、 (False) or TrueTrue となり、メッセージが表示されます。

このように、複雑な条件式を使うときに丸括弧 () を使うと便利です。

if + pass文

Pythonでは、if文で条件分岐を作ることができますが、「条件に合ったときに、まだ何もしない」という場面もあります。
そんなときに使うのが pass 文です。

書式

if 条件式:
    pass
部分 説明
if 条件式 条件がTrue(真)ならブロックを実行
pass 何もしない(空の処理)

pass は「この場所に処理を書く予定だけど、今は空っぽにしておくよ」という意味の“仮置き”です。開発中のコードで、後で処理を書くつもりだけど、今は何も書かない場合などに使います。ちなみに、pass文を書かずに、if文のブロック内に何も書かなかった場合は「構文エラー」になります。

サンプルコード

enemy = "魔王"

if enemy == "魔王":
    pass  # 今は何もしない

print("勇者ぴこりは進み続けた")
勇者ぴこりは進み続けた

`

このコードでは、enemy"魔王" だった場合に pass で何もせずスルーしています。
その後の print() は通常通り実行されます。

【Python】pass文の使い方(何もしない処理)
この記事では、Pythonのpass文でfor, whileループを途中で終了する方法を入門者向けにソースコード付きでまとめました。

関連ページ(もっと学びたい人へ)

Pythonの基礎から応用例まで、以下ページから学ぶことができます。

【Python超入門】基礎から応用例まで幅広く解説
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
Python基礎

コメント