フリーキーズ | 独学プログラミング

初心者向け!Pythonのif, if-elseを使った条件分岐の書き方

最終更新日
リンドくん

リンドくん

たなべ先生、Pythonの「if」と「if-else」って何が違うんですか?
条件分岐って何となく使ってるんですが、いまいち理解できてなくて...

たなべ

たなべ

条件分岐はプログラミングの根幹とも言える重要な概念なんだよ。
今日は「if」と「if-else」の使い方をしっかり解説するね。これをマスターすれば、あなたのコードがグッとスマートになるよ!

プログラミングを学び始めると必ず出会う「条件分岐」。
特にPythonのif文とif-else文は、コードの流れを制御する上で欠かせない存在です。

この記事では、Pythonの条件分岐について、初心者の方にも分かりやすく解説します。
「なんとなく使っている」という状態から、「理解して使いこなせる」レベルを目指しましょう!

条件分岐とは

リンドくん

リンドくん

そもそも「条件分岐」って何なんですか?

たなべ

たなべ

簡単に言うと、「もし〇〇なら××する」という判断をプログラムにさせる仕組みだよ。
日常生活にも条件分岐はたくさんあるんだ。例えば「雨が降っていたら傘を持って行く」というのも条件分岐の一種だね。

条件分岐とは、特定の条件が満たされた場合に特定の処理を実行する仕組みです。
プログラミングにおいて、これは「プログラムの意思決定」とも言えます。

条件分岐の基本的な考え方

条件分岐の基本的な考え方は以下のとおりです。

  • もし〇〇なら(条件)××する(処理)
  • 条件が満たされた場合のみ、指定した処理が実行される
  • 条件が満たされなかった場合は、その処理はスキップされる

例えば、ゲームのスコア計算を考えてみましょう。
「もしスコアが100点以上なら、『クリア!』と表示する」といった処理が条件分岐です。

なぜ条件分岐が必要なのか

条件分岐がなければ、プログラムは常に同じ処理を同じ順序で行うだけの単調なものになってしまいます。
条件分岐があることで、以下のようなことが可能になります。

  • 状況に応じた処理の選択(例: ユーザーの入力に応じた応答)
  • エラー処理(例: 入力値の妥当性チェック)
  • 繰り返し処理の制御(例: 特定の条件を満たすまで継続)

条件分岐はプログラミングの「制御構文」の一種で、プログラムの流れを制御する重要な要素です。

Pythonのif文の基本

リンドくん

リンドくん

if文の基本的な書き方を教えてください!

たなべ

たなべ

Pythonのif文は本当にシンプルで美しい構文なんだよ。
基本形は「if 条件:」で、その後にインデント(字下げ)して実行したい処理を書くんだ。

if文の基本構文

Pythonのif文の基本構文は次のとおりです。

if 条件:
    # 条件が True の場合に実行される処理
    処理1
    処理2
    ...

# ここからは条件に関係なく常に実行される
次の処理

ここで重要なのは、インデント(字下げ)です。
Pythonでは、インデントによってコードブロックを区分けします。
if文の後にインデントされた部分が、条件が満たされた場合に実行される処理となります。

具体的な例

実際のコード例を見てみましょう。

# シンプルなif文の例
score = 85

if score >= 80:
    print("合格です!")
    print("おめでとうございます!")

print("採点終了")

この例では、scoreが80以上の場合に「合格です!」と「おめでとうございます!」が表示されます。
scoreが80未満の場合は、これらのメッセージはスキップされ、「採点終了」だけが表示されます。

比較演算子の種類

if文で条件を設定する際によく使われる比較演算子には、以下のようなものがあります。

  • == (等しい)
  • != (等しくない)
  • > (より大きい)
  • < (より小さい)
  • >= (以上)
  • <= (以下)

これらを使い分けることで、様々な条件判断が可能になります。

age = 18

if age == 18:
    print("ちょうど18歳ですね")

if age > 18:
    print("18歳より上ですね")

if age < 18:
    print("18歳未満ですね")

このように、if文は条件に応じて処理を分岐させる基本的な手段です。
単純なチェックから複雑な条件判断まで、幅広く活用できます。

if-else文

リンドくん

リンドくん

if-else文ってどう使うんですか?ifとの違いは?

たなべ

たなべ

if-else文は「もし〇〇なら××する、そうでなければ△△する」という二者択一の判断ができるんだよ。
ifだけだと条件が満たされない場合は何もしないけど、elseを追加すると「それ以外の場合」の処理も書けるんだ。

if-else文の基本構文

if-else文の基本構文は次のとおりです。

if 条件:
    # 条件が True の場合に実行される処理
    処理A
else:
    # 条件が False の場合に実行される処理
    処理B

# ここからは条件に関係なく常に実行される
次の処理

この構造により、二者択一の条件分岐が可能になります。
条件が満たされた場合は処理A、満たされない場合は処理Bが実行されます。

具体的な例

実際のコード例を見てみましょう。

# if-else文の例
score = 65

if score >= 70:
    print("合格です!")
else:
    print("残念ながら不合格です")

print("採点終了")

この例では、scoreが70以上なら「合格です!」、そうでなければ「残念ながら不合格です」が表示されます。
どちらにしても最後には「採点終了」が表示されます。

if文との違い

if文だけを使った場合と比較してみましょう。

# 単独のif文を使った場合
score = 65

if score >= 70:
    print("合格です!")

if score < 70:
    print("残念ながら不合格です")

print("採点終了")

上記のコードでも同じ結果が得られますが、if-else文を使う方がいくつかの利点があります。

  • コードがより簡潔になる
  • 条件の評価が一度だけ行われる(効率的)
  • 論理的な関係が明確になる

特に条件判断が複雑な場合は、if-else文を使うことでコードの可読性と効率性が向上します。これは本当に助かりますね!

elif文

リンドくん

リンドくん

3つ以上の条件分岐はどうするんですか?
例えば「A、B、C、それ以外」みたいな...

たなべ

たなべ

そんな時に便利なのがelifだよ!
「else if」の略で、「さもなければもし」という意味なんだ。これを使えば複数の条件を順番にチェックしていけるよ。

elif文の基本構文

複数の条件を順番にチェックしたい場合は、elif(else if の略)を使います。

if 条件A:
    # 条件Aが True の場合に実行される処理
    処理A
elif 条件B:
    # 条件Aが False で、条件Bが True の場合に実行される処理
    処理B
elif 条件C:
    # 条件A、Bが False で、条件Cが True の場合に実行される処理
    処理C
else:
    # すべての条件が False の場合に実行される処理
    処理D

この構造により、複数の条件に応じた分岐が可能になります。

具体的な例

成績評価の例で見てみましょう。

# elif文の例
score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"あなたの成績は {grade} です")

この例では、scoreの値に応じて適切な成績(A、B、C、D、F)が割り当てられます。
条件は上から順にチェックされ、最初にTrueとなった条件に対応する処理が実行されます。

条件のチェック順序に注意

elifを使う際に注意すべき点は、条件がチェックされる順序です。

# 間違った順序の例
score = 95

if score >= 60:
    grade = "D"  # score が 60 以上なら常にここで True になってしまう
elif score >= 70:
    grade = "C"
elif score >= 80:
    grade = "B"
elif score >= 90:
    grade = "A"
else:
    grade = "F"

print(f"あなたの成績は {grade} です")  # 常に "D" が表示される

この例では、条件の順序が逆になっているため、95点でも「D」が表示されてしまいます。
条件は必ず厳しい条件(大きい値)から緩い条件(小さい値)へ順に並べる必要があります。

elifを適切に使うことで、複雑な条件分岐も読みやすく効率的に記述できます。
これはコードの可読性と保守性を高める上で非常に重要です。

複合条件:AND、OR、NOTの使い方

リンドくん

リンドくん

複数の条件を同時に確認したいときはどうすればいいですか?例えば「年齢が20歳以上で、かつ学生である」みたいな条件です。

たなべ

たなべ

そういう時には論理演算子を使うんだよ!
「かつ(AND)」はand、「または(OR)」はor、「〜でない(NOT)」はnotというキーワードを使うんだ。これらを組み合わせれば、複雑な条件も表現できるよ。

論理演算子の種類

Pythonには、複数の条件を組み合わせるための論理演算子があります。

  • and - 両方の条件がTrueの場合にTrueを返す(AND条件)
  • or - どちらかの条件がTrueの場合にTrueを返す(OR条件)
  • not - 条件の真偽を反転(NOT条件)

AND条件の例

# AND条件の例
age = 22
is_student = True

if age >= 20 and is_student:
    print("20歳以上の学生です")
    print("学割と成人料金の両方が適用されます")

この例では、「年齢が20歳以上」かつ「学生である」という両方の条件が満たされた場合にのみメッセージが表示されます。

OR条件の例

# OR条件の例
is_weekend = False
is_holiday = True

if is_weekend or is_holiday:
    print("今日はお休みです")
    print("ゆっくり過ごしましょう")

この例では、「週末である」または「祝日である」のどちらかの条件が満たされた場合にメッセージが表示されます。

NOT条件の例

# NOT条件の例
is_open = False

if not is_open:
    print("店舗は現在閉店しています")

この例では、「開店している」という条件がFalseの場合(つまり閉店している場合)にメッセージが表示されます。

複合条件の組み合わせ

論理演算子を組み合わせることで、より複雑な条件を表現することもできます。

# 複合条件の組み合わせ
age = 17
has_id = True
with_parent = True

if (age >= 18 and has_id) or (age < 18 and with_parent):
    print("映画を見ることができます")
else:
    print("映画を見ることができません")

この例では、「18歳以上でIDを持っている」または「18歳未満で保護者同伴」のどちらかの条件が満たされた場合に映画を見ることができます。

論理演算子を適切に使いこなすことで、現実世界の複雑な条件をコードで表現することができます。
これにより、より柔軟で精密なプログラムの作成が可能です。

条件分岐の実践的なテクニック

リンドくん

リンドくん

普段のコーディングで役立つif文のテクニックはありますか?

たなべ

たなべ

もちろん!実際の開発では、条件分岐をよりスマートに書くテクニックがいくつかあるんだ。
特に三項演算子や早期リターンは覚えておくと便利だよ。

三項演算子でコードをシンプルに

簡単なif-else文であれば、三項演算子(条件演算子)を使ってより簡潔に書くことができます。

# 通常のif-else文
if age >= 20:
    status = "成人"
else:
    status = "未成年"

# 三項演算子を使った場合
status = "成人" if age >= 20 else "未成年"

この書き方は「値 if 条件 else 値」という形式で、条件に応じて変数に代入する値を一行で表現できます。
短いif-else文の場合、コードがより読みやすくなることがあります。

早期リターン(ガード節)でネストを減らす

関数内で条件分岐を行う場合、「早期リターン」(またはガード節)という考え方が役立ちます。

# ネストが深くなる書き方
def process_order(order):
    if order.is_valid():
        if order.has_items():
            if order.payment_confirmed():
                # 処理の本体
                return "注文処理完了"
            else:
                return "支払いが確認できません"
        else:
            return "カートが空です"
    else:
        return "無効な注文です"

# 早期リターンを使った書き方
def process_order(order):
    if not order.is_valid():
        return "無効な注文です"
    if not order.has_items():
        return "カートが空です"
    if not order.payment_confirmed():
        return "支払いが確認できません"

    # 処理の本体
    return "注文処理完了"

早期リターンを使うことで、コードのネストが減り、読みやすさが向上します。
特に条件チェックが複数ある場合は、この方法を検討するとよいでしょう。

辞書を使った条件分岐

if-elif文が多数ある場合、特に値に基づいて異なる処理を行う場合は、辞書を使って書き換えることができます。

# 多数のelif文
def get_day_message(day):
    if day == "月曜日":
        return "週の始まり、頑張りましょう"
    elif day == "火曜日":
        return "まだ火曜日、一歩一歩"
    elif day == "水曜日":
        return "週の半ば、あと少し"
    # ...他の曜日も同様
    else:
        return "有効な曜日ではありません"

# 辞書を使った書き換え
def get_day_message(day):
    messages = {
        "月曜日": "週の始まり、頑張りましょう",
        "火曜日": "まだ火曜日、一歩一歩",
        "水曜日": "週の半ば、あと少し",
        # ...他の曜日も同様
    }
    return messages.get(day, "有効な曜日ではありません")

辞書を使うことで、コードがより宣言的になり、新しい条件を追加する際も単に辞書に項目を追加するだけで済みます。

これらのテクニックを状況に応じて使い分けることで、より読みやすく保守性の高いコードを書くことができます。
プログラミングでは、同じ結果を得るための方法が複数あることが多いので、コンテキストに応じて最適な方法を選ぶことが重要です。

まとめ

リンドくん

リンドくん

色々な条件分岐の方法がわかりました!でも実際に身につくまでにはどうすればいいですか?

たなべ

たなべ

一番いいのは実際にコードを書いてみることだね!最初は単純なif文から始めて、徐々に複雑な条件も試してみるといいよ。
それと、他の人のコードを読むのも勉強になるよ。条件分岐はプログラミングの基本だから、しっかりマスターしておくと必ず役立つよ!

Pythonの条件分岐について、基本的なif文から複雑な複合条件まで見てきました。
ここでおさらいしましょう。

条件分岐の主なポイント

  • if文は条件が満たされた場合のみ特定の処理を実行します
  • if-else文は条件によって2つの処理を切り替えます
  • elif文を使うと複数の条件を順番にチェックできます
  • 論理演算子andornot)を使って複合条件を作れます
  • 実践的なテクニック(三項演算子、早期リターン、辞書の活用)でコードをよりスマートに書けます

条件分岐はプログラミングの基本中の基本であり、あらゆる種類のプログラムで使われています。
Webアプリケーション、ゲーム開発、データ分析など、どんな分野でも条件分岐の理解は必須です。

条件分岐をマスターすることで、あなたのコードはより柔軟で、効率的で、読みやすいものになります。
ぜひこの記事を参考に、Pythonの条件分岐をマスターしてください!

関連するコンテンツ