🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Pythonのif文で条件分岐をマスターしよう

PythonをコマンドプロンプトやPowerShellでPC上で動かすには、Pythonをダウンロードしてインストールする必要があります。
まだの方はPythonのインストールと開発環境の構築の記事を参考にして、Pythonをインストールしてください。

プログラミングの世界へようこそ!Webサイト制作やアプリ開発を始めたばかりの皆さん、Pythonの学習は順調ですか?今回は、プログラミングの基本的な「制御構文」の一つであるif文について、徹底的に解説していきます。if文は、特定の条件が満たされたときにだけ処理を実行するための命令で、「もし〇〇ならば、△△する」というような条件分岐を実現します。この記事を読めば、if文の基本から応用までをしっかり理解し、コピペするだけで動くコードで「プログラミングが動く楽しさ」を体験できますよ!


if文の基本的な使い方

まずは、一番シンプルなif文の形から見ていきましょう。これは「もし条件が真(True)なら、中の処理を実行する」というものです。構文は非常にシンプルです。


if 条件式:
    # 条件式が真(True)のときに実行される処理
  

ここで重要なのは、コロン(:)インデント(字下げ)です。if文の行の最後には必ずコロンをつけ、次の行から実行したい処理をインデント(通常は半角スペース4つ)で一段下げて記述します。このインデントが、Pythonにおいてコードのブロックを定義する重要な役割を果たします。

それでは、実際に動くコードを見てみましょう。ここでは、年齢が20歳以上かどうかを判定する簡単な例を紹介します。


# ageという変数に25を代入
age = 25

# もしageが20以上なら、メッセージを表示する
if age >= 20:
    print("あなたは成人です。")

# この行はif文のブロックの外にあるので、条件に関わらず常に実行される
print("プログラムを終了します。")
    

実行結果:


あなたは成人です。
プログラムを終了します。
  

このコードでは、変数`age`が25なので、`age >= 20`という条件式が真(True)になります。そのため、インデントされた`print("あなたは成人です。")`が実行されます。もし`age`の値を18などに変更して実行すれば、この行は実行されず、「プログラムを終了します。」だけが表示されるはずです。ぜひ試してみてください。


else:条件に合わなかった場合の処理

次に、「もし〇〇ならば△△する。そうでなければ××する」というように、条件が満たされなかった場合の処理を追加する方法を学びましょう。ここで登場するのがelseです。


if 条件式:
    # 条件式が真(True)のときに実行される処理
else:
    # 条件式が偽(False)のときに実行される処理
  

先ほどの年齢判定の例に、elseを追加してみましょう。今度は`age`を18に設定してみます。


# ageという変数に18を代入
age = 18

# もしageが20以上なら、"あなたは成人です。"と表示
if age >= 20:
    print("あなたは成人です。")
# そうでなければ、"あなたは未成年です。"と表示
else:
    print("あなたは未成年です。")

print("プログラムを終了します。")
    

実行結果:


あなたは未成年です。
プログラムを終了します。
  

今度は`age`が18なので、`age >= 20`という条件式が偽(False)になります。そのため、ifブロックの処理はスキップされ、elseブロックの中にある`print("あなたは未成年です。")`が実行されました。これにより、どんな年齢が入力されても、必ずどちらかのメッセージが表示されるようになりました。


elif:複数の条件で分岐させる

では、条件が2つ以上ある場合はどうでしょうか?例えば、点数に応じて「優」「良」「可」「不可」のように評価を分けたい場合です。このような複数の条件分岐にはelif(else ifの略)を使います。


if 条件式1:
    # 条件式1が真(True)のときに実行される処理
elif 条件式2:
    # 条件式1が偽で、条件式2が真のときに実行される処理
elif 条件式3:
    # 条件式1, 2が偽で、条件式3が真のときに実行される処理
else:
    # すべての条件式が偽のときに実行される処理
  

elifはいくつでも追加できます。Pythonは上から順に条件式を評価し、最初に真(True)になったブロックの処理を実行すると、残りのelifやelseはすべて無視してif文全体を抜けます。

点数評価の例で見てみましょう。


# scoreという変数に85点を代入
score = 85

if score >= 90:
    grade = "優"
elif score >= 80:
    grade = "良"
elif score >= 60:
    grade = "可"
else:
    grade = "不可"

print(f"あなたの点数は{score}点なので、評価は「{grade}」です。")
    

実行結果:


あなたの点数は85点なので、評価は「良」です。
  

このコードでは、`score`は85です。

  1. 最初の`if score >= 90:`は偽(False)です。
  2. 次の`elif score >= 80:`は真(True)です。
ここで条件が満たされたため、`grade = "良"`が実行され、その後の`elif`や`else`は評価されることなくif文を抜けます。もし`score`が50であれば、`if`も`elif`もすべて偽となり、最後の`else`ブロックが実行されて`grade`は「不可」になります。


応用例:複数の条件を組み合わせる

if文では、`and`(かつ)や`or`(または)、`not`(ではない)といった論理演算子を使って、より複雑な条件を指定することもできます。

例えば、「午前9時から午後5時の間、かつ、土日ではない」という条件を書いてみましょう。


# 現在の時刻と曜日を想定
hour = 10
day_of_week = "月曜日"

# 営業時間を判定
# 時刻が9時以上 かつ 17時未満
is_open_hour = hour >= 9 and hour < 17 
# 曜日が土曜日 または 日曜日 ではない
is_weekday = day_of_week != "土曜日" and day_of_week != "日曜日"

if is_open_hour and is_weekday:
    print("営業時間内です。")
else:
    print("営業時間外です。")
    

実行結果:


営業時間内です。
  

このように、複数の条件を組み合わせることで、より現実世界の複雑なルールをプログラムで表現できるようになります。


Webクリエーター向けの完全な実行例

Webクリエーターの皆さんなら、Pythonを使って動的にHTMLを生成する場面に興味があるかもしれません。次の例は、ユーザーのログイン状態と会員プランに応じて、表示するHTMLメッセージを生成するPythonスクリプトです。このPythonコードを実行すると、`welcome_message.html`という名前のHTMLファイルが生成されます。これこそ「動く」を体験する絶好の機会です!

以下のPythonコードを、例えば `generate_html.py` という名前で保存して実行してみてください。


# --- ユーザー情報のシミュレーション ---
is_logged_in = True
user_name = "田中"
membership_plan = "premium"  # "premium", "standard", "free" のいずれか

# --- HTMLコンテンツの決定 ---
if is_logged_in:
    if membership_plan == "premium":
        title = f"ようこそ、{user_name}様"
        message = "全てのプレミアム機能をご利用いただけます。"
        color = "#ffd700"  # Gold
    elif membership_plan == "standard":
        title = f"ようこそ、{user_name}様"
        message = "スタンダードプランをご利用中です。"
        color = "#4682b4"  # SteelBlue
    else: # free plan
        title = f"ようこそ、{user_name}様"
        message = '無料プランをご利用中です。アップグレードしませんか?'
        color = "#cccccc"  # LightGray
else:
    title = "ゲスト様、こんにちは"
    message = 'サービスを利用するにはログインが必要です。'
    color = "#f0f0f0"

# --- HTMLコードの生成 ---
html_content = f"""
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ウェルカムメッセージ</title>
    <style>
        body {{
            font-family: sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f9f9f9;
        }}
        .welcome-card {{
            border: 2px solid {color};
            border-radius: 10px;
            padding: 2rem;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            text-align: center;
            background-color: white;
        }}
        h1 {{
            color: #333;
        }}
        p {{
            color: #555;
            font-size: 1.1rem;
        }}
        a {{
            color: #007bff;
            text-decoration: none;
        }}
        a:hover {{
            text-decoration: underline;
        }}
    </style>
</head>
<body>
    <div class="welcome-card">
        <h1>{title}</h1>
        <p>{message}</p>
    </div>
</body>
</html>
"""

# --- ファイルへの書き込み ---
try:
    with open("welcome_message.html", "w", encoding="utf-8") as f:
        f.write(html_content)
    print("HTMLファイル 'welcome_message.html' を生成しました。")
    print("ブラウザで開いて確認してください。")
except IOError as e:
    print(f"ファイルの書き込み中にエラーが発生しました: {e}")

    

このコードを実行後、同じフォルダに`welcome_message.html`というファイルが作成されます。このファイルをブラウザで開くと、`is_logged_in`や`membership_plan`の値に応じたデザインのメッセージが表示されるはずです。変数の値を色々と変えてみて、生成されるHTMLがどう変わるか試してみましょう!これがプログラミングで動的なコンテンツを作る第一歩です。


気をつけるべき点(よくある間違い)

if文を使い始めた頃に、誰もが一度は通る間違いがいくつかあります。ここで事前にチェックしておきましょう。

1. 等価演算子`==`と代入演算子`=`の混同

if文の条件式で「等しい」を比較するには、イコールを2つ重ねた`==`を使います。イコール1つの`=`は、変数に値を代入するための演算子です。これを間違えると、エラーになったり、意図しない動作をしたりします。


# 間違い
if membership_plan = "premium": # ここでエラーになる!
    ...

# 正しい
if membership_plan == "premium":
    ...
  

2. インデントのミス

Pythonではインデントがコードの構造そのものを意味します。ifブロック内の処理は、必ず同じ数の半角スペース(通常は4つ)でインデントを揃える必要があります。インデントがずれていると`IndentationError`というエラーが発生します。


score = 80
if score >= 60:
    print("合格です。")
  print("おめでとうございます。") # インデントがずれているためエラー
  

3. `if`と`elif`の使い分け

複数の条件を`if`だけで並べてしまうと、それぞれの`if`文が独立して評価されてしまいます。これは意図した結果と異なる場合があります。

例えば、点数が95点のケースで考えてみましょう。


# 間違った例 (ifの連続)
score = 95
if score >= 90:
    print("評価は優です。")
if score >= 80: # このifも独立して評価される
    print("評価は良です。")
    

実行結果:


評価は優です。
評価は良です。
  

95点は90点以上であり、かつ80点以上でもあるため、両方のメッセージが表示されてしまいました。こういう時こそ`elif`の出番です。`elif`を使えば、上の条件が満たされた時点で評価は終了します。


# 正しい例 (elifを使用)
score = 95
if score >= 90:
    print("評価は優です。")
elif score >= 80:
    print("評価は良です。")
    

実行結果:


評価は優です。
  

このように、一つの事柄について複数の段階で評価したい場合は、`if-elif-else`の構造を使うのが適切です。


関連する便利なコード紹介

if文と一緒によく使われる便利な構文も紹介します。

`in`演算子:リストや文字列に要素が含まれるかチェック

特定の要素がリストやタプル、文字列の中に含まれているかどうかを調べたい場合、`in`演算子が非常に便利です。これにより、`or`をたくさん繋げるよりも簡潔にコードを書けます。

例えば、今日の曜日が休日(土日)かどうかを判定してみましょう。


day_of_week = "日曜日"
holidays = ["土曜日", "日曜日"]

# 冗長な書き方
# if day_of_week == "土曜日" or day_of_week == "日曜日":
#     print("今日はお休みです。")

# in演算子を使ったスマートな書き方
if day_of_week in holidays:
    print("今日はお休みです。")
else:
    print("今日はお仕事です。")
    

実行結果:


今日はお休みです。
  

`in`演算子を使えば、休日のリスト`holidays`に`day_of_week`が含まれているかを一行でチェックでき、コードが非常に読みやすくなります。


まとめ

今回は、Pythonの条件分岐の基本であるif文について、基本的な使い方から`else`、`elif`を使った応用、そしてWebクリエーター向けの具体的なHTML生成例までを解説しました。

if文は、あらゆるプログラムで使われる非常に重要な構文です。この記事のコードを実際に手元で動かし、値を色々変えて試してみてください。自分の書いたコードが条件に応じて振る舞いを変える様子を確認することで、プログラミングの面白さとパワーを実感できるはずです。条件分岐をマスターして、あなたの作りたいWebサービスやツール開発に活かしていきましょう!


次のステップとして、繰り返し処理を学んでみませんか?

次の記事へ: Pythonのfor文・while文でループを理解しよう