論理演算子を使用して複雑な条件を作成する (または作成しない)
Tip
詳細については、「 テキストと画像 」タブを参照してください。
場合によっては、1 つの条件では決定を下すには不十分です。 2 つのことが両方とも当てはまるかどうか、または少なくとも 1 つが true かどうかを確認できます。 たとえば、アカウント がアクティブで 資金提供されているかどうか、またはユーザーが管理者 または モデレーターであるかどうかを確認する必要がある場合があります。
Pythonの論理演算子を使用すると、複数の条件を 1 つの式に結合できます。
3 つの論理演算子
| Operator | それが何をするか | Example | Result |
|---|---|---|---|
and |
True
両側がTrue |
True and False |
False |
or |
True
少なくとも一方の辺がTrue |
True or False |
True |
not |
ブール値を反転します。 | not True |
False |
使用と (すべての条件を満たす必要があります)
コード ブロックを実行するためにすべての条件を満たす必要がある場合は、 and を使用します。
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("Entry granted.")
else:
print("Entry denied.")
Output:
Entry granted.
使用または (少なくとも 1 つの条件を満たす必要があります)
1 つの条件でコード ブロックを実行するのに十分な場合は、 or を使用します。 日常的な言語では、通常、"or" は "一方または他方、両方ではありません" を意味します。ただし、Pythonでは、"or" は "一方または両方" を意味します。
is_weekend = False
is_holiday = True
if is_weekend or is_holiday:
print("The office is closed.")
Output:
The office is closed.
not を使用する (条件を逆にする)
not演算子はブール値を反転します。 条件が Trueの場合は Falseになり、その逆も同様になります。 この演算子は、条件がないかどうかを確認する場合に便利です。
is_logged_in = False
if not is_logged_in:
print("Please log in to continue.")
Output:
Please log in to continue.
結合演算子
and、or、およびnotを 1 つの式で組み合わせることができます。 常にかっこを使用して条件をグループ化し、コードを読みやすくします。
score = 85
has_extra_credit = True
is_past_due = False
# Example: Pass if (Score is high OR extra credit is earned) AND the work isn't late
if (score >= 90 or has_extra_credit) and not is_past_due:
print("Requirement met.")
ショートカット エラーを回避する
1 つの変数を複数の値と比較すると、次のような記述が必要になることがあります。
# Incorrect: This code will not work as intended
if score == 90 or 100:
print("You got an A!")
この場合、Pythonは最初にscore == 90を評価します。これは、TrueまたはFalseです。 次に、常にTrueされる100を評価します。 0 以外の数値と空でない文字列は、常にPythonのTrueとしてカウントされます。 その結果、scoreの値に関係なく、条件は常にTrueされます。 常に各値を明示的に比較します。
# Correct: Each value is compared explicitly
if score == 90 or score == 100:
print("You got an A!")