【Python】if文に複数条件を書く方法

Pythonプログラミングを始めたばかりの方へ、この記事ではif文に複数の条件を組み合わせて使う方法をわかりやすく解説します。

論理演算子(and、or、not)の基本から、実際のプログラムでの使い方まで、具体的な例を交えて説明します。

この記事を読むことで、複雑な条件分岐を簡単に実現できるようになります。

目次から探す

複数条件を使ったif文

Pythonのif文では、複数の条件を組み合わせて使うことができます。

これにより、より複雑な条件分岐を実現することができます。

複数条件を使うためには、論理演算子を理解することが重要です。

ここでは、論理演算子の基本と、それを使った具体的な例を紹介します。

論理演算子の基本

Pythonには主に3つの論理演算子があります。

それぞれの演算子の基本的な使い方を見ていきましょう。

and演算子

and演算子は、両方の条件がTrueである場合にTrueを返します。

例えば、次のように使います。

if 条件1 and 条件2:
    # 条件1と条件2が両方ともTrueの場合に実行される

or演算子

or演算子は、どちらか一方の条件がTrueであればTrueを返します。

例えば、次のように使います。

if 条件1 or 条件2:
    # 条件1または条件2のどちらかがTrueの場合に実行される

not演算子

not演算子は、条件の真偽を反転させます。

例えば、次のように使います。

if not 条件:
    # 条件がFalseの場合に実行される

and演算子を使った複数条件

and演算子を使うことで、複数の条件がすべて満たされた場合にのみ処理を実行することができます。

and演算子の基本例

次の例では、変数aとbが両方とも10以上である場合にメッセージを表示します。

a = 15
b = 20
if a >= 10 and b >= 10:
    print("aとbは両方とも10以上です")

and演算子を使った実践例

次の例では、ユーザーの年齢と居住地をチェックし、特定の条件を満たす場合にメッセージを表示します。

age = 25
location = "Tokyo"
if age >= 18 and location == "Tokyo":
    print("あなたは東京に住んでいる18歳以上の方です")

or演算子を使った複数条件

or演算子を使うことで、複数の条件のうちどれか一つでも満たされた場合に処理を実行することができます。

or演算子の基本例

次の例では、変数aまたはbが10以上である場合にメッセージを表示します。

a = 5
b = 20
if a >= 10 or b >= 10:
    print("aまたはbのどちらかが10以上です")

or演算子を使った実践例

次の例では、ユーザーの年齢または居住地をチェックし、特定の条件を満たす場合にメッセージを表示します。

age = 16
location = "Osaka"
if age >= 18 or location == "Tokyo":
    print("あなたは18歳以上か、東京に住んでいる方です")

not演算子を使った条件反転

not演算子を使うことで、条件の真偽を反転させることができます。

これにより、条件が満たされない場合に処理を実行することができます。

not演算子の基本例

次の例では、変数aが10未満である場合にメッセージを表示します。

a = 5
if not a >= 10:
    print("aは10未満です")

not演算子を使った実践例

次の例では、ユーザーが特定の年齢ではない場合にメッセージを表示します。

age = 20
if not age == 18:
    print("あなたは18歳ではありません")

以上が、Pythonのif文に複数条件を書く方法の基本的な解説です。

これらの論理演算子を組み合わせることで、より複雑な条件分岐を実現することができます。

複数条件を組み合わせたif文

andとorの組み合わせ

基本的な組み合わせ例

Pythonでは、andorを組み合わせて複数の条件を一つのif文で評価することができます。

これにより、より複雑な条件分岐を実現することができます。

例えば、以下のコードは、変数aが10以上であり、かつ変数bが20以下である場合に特定の処理を行います。

a = 15
b = 18
if a >= 10 and b <= 20:
    print("条件を満たしています")
else:
    print("条件を満たしていません")

この例では、aが10以上であり、bが20以下であるため、条件を満たしていますと出力されます。

複雑な条件の組み合わせ

複数のandorを組み合わせることで、さらに複雑な条件を評価することができます。

例えば、以下のコードは、変数aが10以上であり、かつ変数bが20以下、または変数cが30以上である場合に特定の処理を行います。

a = 15
b = 25
c = 30
if (a >= 10 and b <= 20) or c >= 30:
    print("複雑な条件を満たしています")
else:
    print("複雑な条件を満たしていません")

この例では、aが10以上であり、bが20以下ではないが、cが30以上であるため、複雑な条件を満たしていますと出力されます。

複数条件のネスト

ネストの基本例

条件分岐をさらに細かく制御するために、if文をネスト(入れ子)することができます。

ネストを使うことで、条件が複数階層にわたる場合でも対応できます。

例えば、以下のコードは、変数aが10以上である場合にさらにbの値を評価し、bが20以下である場合に特定の処理を行います。

a = 15
b = 18
if a >= 10:
    if b <= 20:
        print("ネストされた条件を満たしています")
    else:
        print("bが条件を満たしていません")
else:
    print("aが条件を満たしていません")

この例では、aが10以上であり、bが20以下であるため、ネストされた条件を満たしていますと出力されます。

ネストを使った実践例

ネストを使うことで、より複雑な条件分岐を実現することができます。

例えば、ユーザーの年齢と居住地に基づいて特定のメッセージを表示する場合を考えてみましょう。

age = 25
location = "Tokyo"
if age >= 18:
    if location == "Tokyo":
        print("東京に住んでいる成人です")
    else:
        print("他の地域に住んでいる成人です")
else:
    if location == "Tokyo":
        print("東京に住んでいる未成年です")
    else:
        print("他の地域に住んでいる未成年です")

この例では、ageが18以上であり、locationTokyoであるため、東京に住んでいる成人ですと出力されます。

以上のように、andorの組み合わせやネストを使うことで、Pythonのif文を使った複雑な条件分岐を実現することができます。

これらのテクニックを活用して、より柔軟で強力なプログラムを作成しましょう。

条件式の短縮形

Pythonでは、条件式を短縮して書く方法がいくつかあります。

これにより、コードがより簡潔で読みやすくなります。

ここでは、三項演算子とall()関数any()関数について解説します。

三項演算子(条件式)

三項演算子の基本構文

三項演算子は、条件式を1行で書くための方法です。

基本構文は以下の通りです。

<真の場合の値> if <条件> else <偽の場合の値>

例えば、変数aが10より大きい場合に大きい、それ以外の場合に小さいと表示するコードは以下のようになります。

a = 15
result = "大きい" if a > 10 else "小さい"
print(result)  # 出力: 大きい

三項演算子を使った実践例

次に、三項演算子を使った実践的な例を見てみましょう。

例えば、ユーザーの年齢に基づいて成人か未成年かを判定するコードです。

age = 20
status = "成人" if age >= 20 else "未成年"
print(status)  # 出力: 成人

このように、三項演算子を使うことで、if文を1行で簡潔に書くことができます。

all()関数とany()関数

all()関数の基本

all()関数は、与えられたイテラブル(リストやタプルなど)のすべての要素が真である場合にTrueを返します。

少なくとも1つの要素が偽である場合はFalseを返します。

conditions = [True, True, True]
result = all(conditions)
print(result)  # 出力: True

any()関数の基本

any()関数は、与えられたイテラブルの少なくとも1つの要素が真である場合にTrueを返します。

すべての要素が偽である場合はFalseを返します。

conditions = [False, True, False]
result = any(conditions)
print(result)  # 出力: True

all()とany()を使った実践例

次に、all()とany()を使った実践的な例を見てみましょう。

例えば、複数の条件をチェックして、すべての条件が満たされているか、または少なくとも1つの条件が満たされているかを確認するコードです。

# すべての条件が満たされているかを確認
conditions = [a > 10, b < 20, c == 15]
if all(conditions):
    print("すべての条件が満たされています")
else:
    print("条件が満たされていません")
# 少なくとも1つの条件が満たされているかを確認
conditions = [a > 10, b < 20, c == 15]
if any(conditions):
    print("少なくとも1つの条件が満たされています")
else:
    print("条件が満たされていません")

このように、all()とany()を使うことで、複数の条件を簡潔にチェックすることができます。

実践的な例

ここでは、実際のプログラムでよく使われる複数条件を使ったif文の例を紹介します。

具体的なシナリオを通じて、どのように複数条件を活用するかを学びましょう。

ユーザー入力を使った条件分岐

ユーザーからの入力を受け取り、その入力に基づいて異なる処理を行う場合、複数条件を使ったif文が非常に役立ちます。

以下の例では、ユーザーの年齢と性別に基づいて異なるメッセージを表示します。

# ユーザーから年齢と性別を入力してもらう
age = int(input("年齢を入力してください: "))
gender = input("性別を入力してください (男性/女性): ")
# 年齢と性別に基づいてメッセージを表示
if age >= 18 and gender == "男性":
    print("成人男性です。")
elif age >= 18 and gender == "女性":
    print("成人女性です。")
elif age < 18 and gender == "男性":
    print("未成年の男性です。")
elif age < 18 and gender == "女性":
    print("未成年の女性です。")
else:
    print("入力が正しくありません。")

この例では、and演算子を使って年齢と性別の両方の条件をチェックしています。

ユーザーの入力に応じて、適切なメッセージが表示されます。

データのフィルタリング

データのフィルタリングは、特定の条件に一致するデータを抽出するために使用されます。

以下の例では、リスト内の数値が偶数であり、かつ10以上であるものをフィルタリングします。

# 数値のリスト
numbers = [5, 12, 7, 18, 3, 20, 15, 8]
# 偶数かつ10以上の数値をフィルタリング
filtered_numbers = [num for num in numbers if num % 2 == 0 and num >= 10]
print("フィルタリングされた数値:", filtered_numbers)

この例では、リスト内包表記とand演算子を使って、条件に一致する数値を抽出しています。

結果として、[12, 18, 20]が出力されます。

複数条件を使ったエラーチェック

プログラムの中でエラーチェックを行う際にも、複数条件を使ったif文が役立ちます。

以下の例では、ユーザーが入力したパスワードが特定の条件を満たしているかどうかをチェックします。

# ユーザーからパスワードを入力してもらう
password = input("パスワードを入力してください: ")
# パスワードのエラーチェック
if len(password) < 8:
    print("パスワードは8文字以上である必要があります。")
elif not any(char.isdigit() for char in password):
    print("パスワードには少なくとも1つの数字が含まれている必要があります。")
elif not any(char.isupper() for char in password):
    print("パスワードには少なくとも1つの大文字が含まれている必要があります。")
elif not any(char.islower() for char in password):
    print("パスワードには少なくとも1つの小文字が含まれている必要があります。")
else:
    print("パスワードは有効です。")

この例では、elifを使って複数の条件を順番にチェックしています。

各条件が満たされない場合に対応するエラーメッセージが表示され、すべての条件が満たされると「パスワードは有効です。」と表示されます。

これらの実践的な例を通じて、複数条件を使ったif文の使い方が理解できたでしょう。

実際のプログラムでこれらのテクニックを活用して、より複雑な条件分岐を実現してください。

目次から探す