条件分岐とは? Pythonで使う if 文・if-else・match-case をわかりやすく解説!

conditions プログラミング学習
アフィリエイト広告を利用しています

こんにちは!kumoriのお部屋へようこそ。

プログラミングを学んでいると、「条件分岐」という言葉を耳にすることがあるかもしれません。

例えば、
テストの点数に応じて「合格」または「不合格」を判定する

これが、条件分岐の一例です。

今回は、Pythonを使って条件分岐の基本をわかりやすく解説します!

それでは、いきましょう!

        

条件分岐とは、「もし○○ならば、こうする」という方式


条件分岐とは、
「ある条件を満たしたときに特定の処理を実行する」という仕組みのことです。

人間の思考に例えると、次のようなものです。

  • もし雨が降っていたら、傘を持っていく
  • もしお金が足りなければ、買い物をやめる
  • もし18歳以上なら、映画を視聴できる


プログラムでも、条件をチェックして処理を分岐することで、柔軟な動作を実現できます。

    

この記事を進める前に知っておきたいこと

今回の記事で出てくる、理解するべき用語を紹介します。
    

インデント

インデントとは、コードの行頭にスペースを入れて、プログラムの構造を示すルールです。

Pythonでは、if などの条件分岐の後に インデントを入れないとエラーになります。

インデントのある正しい例

if 10 > 5:
print("正しくインデントされています")

黄色マーカー部分(print の前の半角スペース4つ)がインデントです。
  

インデントがないエラーの例

if 10 > 5:
print("インデントがないのでエラー")

ポイント

  • 「この処理は if の中ですよ」と示すためにインデントを使う
  • 一般的に半角スペース4つを使う
  • if 以外にも、for や while などでもインデントが必要
         

True

条件が成り立つとき

False

条件が成り立たないとき

   

代表的な条件分岐の種類

Pythonの条件分岐には、主に以下の5つの基本形があります。

  1. if 文(条件を満たす場合に処理を実行)
      
  2. if-else 文(条件を満たす場合と満たさない場合で異なる処理を実行)
      
  3. if-elif-else 文(複数の条件を順番にチェックして、最初に当てはまる処理を実行)
        
  4. ネストされた if(入れ子の条件分岐)if の中に if を入れる)
        
  5. 三項演算子(1行で書く条件分岐)(シンプルな if-else を短縮)

それでは、それぞれ詳しく解説していきます。
   

if 文(基本の条件分岐)

if 文 は、「条件がTrueのときに実行する処理」を定義します。

Pythonでは、インデント(字下げ)によって if 文の範囲を示します。

基本構文

if 条件:
 条件がTrueのときに実行する処理

実際のコード例

age = 20

if age >= 18:
print("あなたは大人です")

実行結果

あなたは大人です

このコードでは、変数 age が 18以上 の場合に “あなたは大人です” と表示されます。
ageが17以下だった場合、何も表示されません。

 

if-else 文(条件に当てはまらない場合の処理)

if 文だけだと、条件が「False」の場合に何もしません。

else を使うと、条件が「False」のときに実行する処理を指定できます。

基本構文

if 条件:
条件がTrueのときの処理
else:
条件がFalseのときの処理

実際のコード例

temperature = 15

if temperature > 25:
print("今日は暑いですね!")

else:
print("今日は涼しいですね!")

実行結果

今日は涼しいですね!

このように、if の条件(15>25)が False のときに else のブロックが実行されます。

    

if-elif-else 文(複数の条件をチェック)

elif(else if の略)を使うと、複数の条件を順番にチェックできます。

if の条件が False でも、elif の条件が True なら、そのブロックが実行されます。

基本構文

if 条件1:
条件1がTrueのときの処理
elif 条件2:
条件1がFalseで、条件2がTrueのときの処理
else:
すべての条件がFalseのときの処理

実際のコード例

temperature = 20

if temperature > 25:
print("今日は暑いですね!")

elif temperature > 15:
print("ちょうどいい気温ですね!")

else:
print("今日は寒いですね!")

実行結果

ちょうどいい気温ですね!

処理の流れ

  1. if temperature > 25 をチェック→20 > 25 はFalseなので、次の elif に進む
        
  2. elif temperature > 15 をチェック→20 > 15 はTrueなので、このブロックの処理を実行
       
  3. Trueになったので、次のelse はスキップ

else は、すべての条件が False のときに実行されるため、必須ではありませんが、条件をすべて網羅したい場合に便利です。

   

ネストされた条件分岐(入れ子の if)

if 文の中にさらに if 文を書くと、細かい条件を設定できます。

これは「ネスト(入れ子)された条件分岐」と呼ばれます。

実際のコード例

age = 20
has_ticket = True

if age >= 18:

if has_ticket: # チケットを持っているかチェック
print("入場できます")

else:
print("チケットが必要です")
else:
print("18歳未満は入場できません")

実行結果

入場できます

処理の流れ

  1. if age >= 18 の条件をチェック
    • 20 >= 18 は True なので、次の if に進む
  2. if has_ticket の条件をチェック
    • has_ticket = True なので、print(“入場できます”) が実行される

「if 変数名:について
今回の has_ticket のように、
if 変数名: と書くと、その変数が True のときに処理を実行するという意味になります。

    

三項演算子(1行で書く条件分岐)

if-else 文なら、三項演算子(条件演算子) を使うと1行でスッキリ書けます。

基本構文

変数 = 値1 if 条件 else 値2

条件がTrue なら 値1 を、False なら 値2 を変数に代入します。

実際のコード例(Trueになる場合)

age = 20

message = "大人です" if age >= 18 else "未成年です"

print(message)

実行結果

大人です

処理の流れ

  1. age >= 18 の条件をチェック
    • 20 >= 18 は True なので、”大人です” が message に代入される
           
  2. print(message) によって “大人です” が出力される

    

別パターン(Falseになる場合)

age = 16

message = "大人です" if age >= 18 else "未成年です"

print(message)

実行結果

未成年です

処理の流れ

  1. age >= 18 の条件をチェック
    • 16 >= 18 は False なので、”未成年です” が message に代入される
         
  2. print(message) によって “未成年です” が出力される

以上が、条件分岐の5つの基本形です。

これらがPythonにおける基本的な条件分岐の方法ですが、
Python 3.10 以降では「match-case」という新しい条件分岐の書き方も利用できます。

   

match-case とは、「elif+簡潔さ」を持ち合わせた存在

match-case とは、特定の値に応じて異なる処理を実行するための条件分岐の構文です。

変数の値をチェックし、一致する case(条件)があれば、その処理を実行します。

条件によって処理を分岐する点では「if-elif-else」文と同じですが、
match-case は、「より簡潔に書ける」という特徴があります。

基本構文

match 変数:

case 値1:
# 値1のときの処理

case 値2:
# 値2のときの処理

case _:
# どの値にも当てはまらない場合の処理

実際のコード例(match-case)

day = "月曜日"

match day:

case "月曜日":
print("今週が始まりました!")

case "金曜日":
print("週末が近いですね!")

case _:
print("普通の日です")

実行結果

今週が始まりました!

処理の流れ

  1. match day: によって、変数 day の値をチェック
        
  2. case “月曜日”: が True になる(day は “月曜日” なので一致)
    • “今週が始まりました!” が出力される

※最初に一致した case が実行された時点で、他の case は無視される

「if-elif-else」で書く場合

day = "月曜日"

if day == "月曜日":
print("今週が始まりました!")

elif day == "金曜日":
print("週末が近いですね!")

else:
print("普通の日です")

実行結果

今週が始まりました!

処理の流れ

  1. if day == “月曜日” をチェック
    • day は “月曜日” なので True
    • “今週が始まりました!” を出力

※最初の条件が True になった時点で、elif や else の処理は無視される

     

「match-case」と「if-elif-else」の違いまとめ

項目match-caseif-elif-else
基本的な使い方変数の値をもとに case で分岐条件ごとに == を使って比較
記述の長さすっきり書ける条件が増えると長くなる
実行の流れmatch の後、一度だけ判定して処理条件ごとに if を評価

   
「if-elif-else」は幅広い条件に対応でき、「match-case」は特定の値ごとの分岐を簡潔に書けるため、用途に応じて使い分けましょう!

     

    

次に学ぶべき記事を紹介

同じ処理を効率的に繰り返すために、「ループ文」を学びましょう!

      

最後に

ここまでブログを読んでいただき、ありがとうございました。

条件分岐を使うことで、状況に応じた判断を行い、より柔軟な処理を実現できます。

いろいろなコードを書いてみて、プログラムの感覚をつかんでいきましょう!