Pythonの条件分岐(if文)

投稿日: 2024年3月21日

Pythonでの条件分岐(if文)は、特定の条件を満たすかどうかに基づいて、プログラムが異なるアクションをとるようにする機能です。

今回はif文について教えてください。

if文は色々な使い方ができるのでしっかり覚えてね。

これは、日常生活での「もし~なら、~する」に似ています。例えば、「もし外が雨なら、傘を持っていく」という判断をするのと同じように、Pythonでも条件に応じて異なる処理を行うことができます。

基本形

Pythonにおけるif文の基本形は以下のようになります。

if 条件式:
    # 条件式がTrueの場合に実行されるブロック

条件式はTrue(真)またはFalse(偽)の値を持ちます。条件式がTrueの場合、if文に続くインデントされたブロックのコードが実行されます。
Pythonでは、ブロックを示すためにインデント(通常はスペース4つ)を使用します。

より複雑な条件分岐

if文だけでなく、elif(else ifの略)とelseを組み合わせることで、より複雑な条件分岐を作ることができます。

if 条件式1:
    # 条件式1がTrueの場合に実行されるブロック
elif 条件式2:
    # 条件式1がFalseで条件式2がTrueの場合に実行されるブロック
else:
    # すべての条件式がFalseの場合に実行されるブロック

age = 18

if age < 18:
    print("未成年です。")
elif age == 18:
    print("ちょうど成人です。")
else:
    print("成人です。")

この例では、まずage < 18という条件がチェックされます。
この条件がTrueなら「未成年です。」と出力します。Falseの場合、次にage == 18という条件がチェックされます。
これがTrueなら「ちょうど成人です。」と出力し、それもFalseなら最後にelseブロックが実行され、「成人です。」と出力されます。

最初に年齢を調べて次に年齢によって質問内容を変えることって出来ますか?

if文の中にif文を作るっていう感じかな? それはネストといってif文の中にさらにif文を含める方法だよ。

ネストしたif文とは、if文の中にさらにif文を含めることで、より詳細な条件分岐を作る技法です。
これにより、条件に応じてより具体的な処理を行うことができます。ネストしたif文は、プログラム内で複数レベルの条件をチェックする必要がある場合に特に有効です。

ネストしたif文の基本形

if 条件式1:
    # 条件式1がTrueの場合に実行されるブロック
    if 条件式2:
        # 条件式1と条件式2がTrueの場合に実行されるブロック
    else:
        # 条件式1がTrueで条件式2がFalseの場合に実行されるブロック
else:
    # 条件式1がFalseの場合に実行されるブロック

この構造では、最初のif文で条件式1を評価し、真であればそのブロック内に入ります。
その中で、さらに条件式2を評価する二つ目のif文があります。これにより、より具体的な条件に基づいて処理を分岐させることができます。

age = 20
is_student = True

if age < 30:
    if is_student:
        print("20代の学生です。")
    else:
        print("20代ですが、学生ではありません。")
else:
    if is_student:
        print("30歳以上ですが、学生です。")
    else:
        print("30歳以上で、学生ではありません。")

この例では、まずage < 30という条件で年齢をチェックしています。その条件がTrueであれば、次にis_studentがTrueかどうかをチェックして、学生かどうかを評価しています。
これにより、年齢と学生であるかどうかの両方の条件に基づいて、異なるメッセージを出力することができます。

ネスト注意点

  • ネストが深くなると、コードの可読性が低下することがあるため、適切なコメントや空行を挿入して、コードを読みやすくすることが大切です。
  • 条件が多くなる場合は、ネストしたif文よりも別の方法(例えば、関数を使う)で処理を分けることも考えましょう。

if文のandとor

Pythonにおけるif文でのandとorは、複数の条件を組み合わせて評価するために使用される論理演算子です。これにより、より複雑な条件に基づいて処理を分岐させることができます。

and演算子

and演算子は、すべての条件がTrueである場合にのみTrueを返します。一つでもFalseがある場合は、その時点でFalseを返します。if文内でandを使うと、複数の条件がすべて真である場合にのみ、特定のブロックを実行します。

or演算子

or演算子は、条件のうち少なくとも一つがTrueであればTrueを返します。すべての条件がFalseである場合のみ、Falseを返します。if文内でorを使うと、複数の条件のうち一つでも真であれば、特定のブロックを実行します。

使用例

age = 25
is_student = False

# andを使用した例
if age > 20 and is_student:
    print("20歳を超える学生です。")
else:
    print("20歳を超える学生ではありません。")

# orを使用した例
if age > 20 or is_student:
    print("20歳を超えているか、学生です。")
else:
    print("20歳以下で、学生でもありません。")

この例では、最初の条件分岐でage > 20 and is_studentを評価しています。この場合、ageが20を超えていて、かつis_studentがTrueである場合にのみ、「20歳を超える学生です。」と出力します。and演算子が使われているので、両方の条件がTrueでなければなりません。

二つ目の条件分岐では、age > 20 or is_studentを評価しています。この場合、ageが20を超えているか、is_studentがTrueであれば、「20歳を超えているか、学生です。」と出力します。or演算子が使われているので、どちらか一方の条件がTrueであれば十分です。

注意点

  • 複数の論理演算子を組み合わせる場合は、条件の評価順序を明確にするために括弧()を使用することが推奨されます。
  • andorよりも評価の優先度が高いため、混在させる場合には特に注意が必要です。

条件分岐を学ぶことはプログラミングの基本中の基本です。
様々な条件に応じてプログラムの振る舞いを変えることができるようになると、より複雑で便利なプログラムを作ることができるようになります。

記事