[Python] 論理演算子をif文で使う
Pythonでは、論理演算子を用いて複数の条件を組み合わせてif文を作成することができます。
主な論理演算子には、and
、or
、not
があります。
and
はすべての条件が真の場合に真を返し、or
は少なくとも一つの条件が真の場合に真を返します。
not
は条件の真偽を反転させます。
これらを組み合わせることで、複雑な条件分岐を簡潔に記述することが可能です。
論理演算子を使ったif文の実例
Pythonのif文では、論理演算子を使用して複数の条件を組み合わせることができます。
ここでは、and
、or
、not
の各演算子を使った条件分岐の実例を紹介します。
and演算子を使った条件分岐
複数条件の同時成立
and
演算子は、複数の条件がすべて成立する場合にのみ、True
を返します。
以下の例では、変数age
とincome
の両方が条件を満たす場合にメッセージを表示します。
age = 30
income = 50000
if age > 25 and income > 40000:
print("条件を満たしています。")
条件を満たしています。
この例では、age
が25より大きく、かつincome
が40000より大きい場合にメッセージが表示されます。
ネストされたif文との組み合わせ
and
演算子はネストされたif文と組み合わせることで、より複雑な条件を表現できます。
age = 30
income = 50000
is_employed = True
if age > 25:
if income > 40000 and is_employed:
print("すべての条件を満たしています。")
すべての条件を満たしています。
この例では、age
が25より大きく、income
が40000より大きく、かつis_employed
がTrue
である場合にメッセージが表示されます。
or演算子を使った条件分岐
いずれかの条件の成立
or
演算子は、いずれかの条件が成立すればTrue
を返します。
以下の例では、age
またはincome
のいずれかが条件を満たす場合にメッセージを表示します。
age = 20
income = 50000
if age > 25 or income > 40000:
print("いずれかの条件を満たしています。")
いずれかの条件を満たしています。
この例では、age
が25より大きいか、またはincome
が40000より大きい場合にメッセージが表示されます。
複数のor条件の組み合わせ
複数のor
条件を組み合わせることで、さらに柔軟な条件分岐が可能です。
age = 20
income = 30000
is_student = True
if age > 25 or income > 40000 or is_student:
print("いずれかの条件を満たしています。")
いずれかの条件を満たしています。
この例では、age
が25より大きい、income
が40000より大きい、またはis_student
がTrue
である場合にメッセージが表示されます。
not演算子を使った条件分岐
条件の否定
not
演算子は、条件を否定します。
以下の例では、is_student
がFalse
の場合にメッセージを表示します。
is_student = False
if not is_student:
print("学生ではありません。")
学生ではありません。
この例では、is_student
がFalse
である場合にメッセージが表示されます。
not演算子と他の論理演算子の組み合わせ
not
演算子は、他の論理演算子と組み合わせることで、より複雑な条件を表現できます。
age = 30
income = 50000
is_student = False
if not is_student and (age > 25 or income > 40000):
print("学生ではなく、いずれかの条件を満たしています。")
学生ではなく、いずれかの条件を満たしています。
この例では、is_student
がFalse
であり、かつage
が25より大きいか、またはincome
が40000より大きい場合にメッセージが表示されます。
論理演算子とif文の応用例
論理演算子を使ったif文は、さまざまな場面で応用が可能です。
ここでは、いくつかの具体的な応用例を紹介します。
複雑な条件分岐の実装
複雑な条件分岐を実装する際には、論理演算子を組み合わせて条件を整理することが重要です。
以下の例では、複数の条件を組み合わせて、特定の条件を満たす場合にメッセージを表示します。
age = 30
income = 50000
is_employed = True
has_degree = True
if (age > 25 and income > 40000) or (is_employed and has_degree):
print("条件を満たしています。")
この例では、age
が25より大きくincome
が40000より大きい、またはis_employed
とhas_degree
の両方がTrue
である場合にメッセージが表示されます。
ユーザー入力の検証
ユーザーからの入力を検証する際にも、論理演算子を活用できます。
以下の例では、ユーザーが入力した年齢と収入が有効な範囲内にあるかを確認します。
age = int(input("年齢を入力してください: "))
income = int(input("収入を入力してください: "))
if age >= 18 and age <= 65 and income >= 0:
print("入力が有効です。")
else:
print("入力が無効です。")
この例では、年齢が18歳以上65歳以下であり、収入が0以上である場合に「入力が有効です」と表示されます。
データフィルタリング
データのフィルタリングにも論理演算子を使用できます。
以下の例では、リスト内のデータを特定の条件に基づいてフィルタリングします。
data = [
{"name": "Alice", "age": 30, "income": 50000},
{"name": "Bob", "age": 20, "income": 30000},
{"name": "Charlie", "age": 25, "income": 40000}
]
filtered_data = [person for person in data if person["age"] > 25 and person["income"] > 40000]
print(filtered_data)
この例では、年齢が25歳以上で収入が40000以上の人々をフィルタリングし、結果を表示します。
エラーハンドリング
エラーハンドリングにおいても、論理演算子を使って条件をチェックすることができます。
以下の例では、入力が有効でない場合にエラーメッセージを表示します。
def validate_input(age, income):
if not (isinstance(age, int) and isinstance(income, int)):
print("エラー: 年齢と収入は整数でなければなりません。")
elif age < 0 or income < 0:
print("エラー: 年齢と収入は0以上でなければなりません。")
else:
print("入力が有効です。")
validate_input(30, 50000)
validate_input("30", 50000)
この例では、年齢と収入が整数であり、かつ0以上であるかをチェックし、条件を満たさない場合にエラーメッセージを表示します。
ゲームロジックの実装
ゲームロジックの実装においても、論理演算子は重要な役割を果たします。
以下の例では、プレイヤーの状態に基づいてゲームの進行を制御します。
player_health = 100
player_mana = 50
enemy_nearby = True
if player_health > 0 and (player_mana > 0 or not enemy_nearby):
print("プレイヤーは行動できます。")
else:
print("プレイヤーは行動できません。")
この例では、プレイヤーの体力が0より大きく、かつマナが0より大きいか敵が近くにいない場合に「プレイヤーは行動できます」と表示されます。
まとめ
論理演算子は、Pythonのif文で複雑な条件分岐を実現するための強力なツールです。
この記事では、論理演算子の基本的な使い方から応用例までを紹介しました。
これらの知識を活用して、より効率的で読みやすいコードを書くことを目指しましょう。
今後は、実際のプロジェクトで論理演算子を活用し、条件分岐の実装を試してみてください。