AND, OR, NOTの使い方

Pythonでは、論理演算子を使うことで、複数の条件を自由に組み合わせることができます。使用するのは and、or、not という3つの英語のキーワードです。これらをマスターすると、複雑なビジネスルールや例外処理をスマートに表現できるようになります。この記事では、それぞれの演算子の具体的な役割と、直感的に理解できる「真理値表」、そして実務での応用テクニックを解説します。
1. AND演算子(かつ)
and 演算子は、繋いだ条件がすべて真(True)であるときだけ全体を真と判定します。すべてのハードルをクリアしたときだけ処理を進めたい場合に使用します。
# AND演算子を使った例
x = 10
y = 20
# xが5より大きく、かつ、yが30より小さいか?
if x > 5 and y < 30:
print("xは5より大きく、yは30より小さい") # 両方クリアしているので実行されます
2. OR演算子(または)
or 演算子は、繋いだ条件のうち少なくとも1つが真(True)であれば全体を真と判定します。どれか1つでも条件を満たしていればOK、という緩いチェックを行いたい場合に使用します。
# OR演算子を使った例
x = 10
y = 50
# xが5より大きいか、または、yが30より小さいか?
if x > 5 or y < 30:
print("xが5より大きいか、yが30より小さい") # xの条件をクリアしているため実行されます
3. NOT演算子(〜ではない)
not 演算子は、条件の真偽をそっくりそのまま反転させます。TrueをFalseに、FalseをTrueに変えるため、「〜ではない場合」という否定の条件を作りたいときに重宝します。
# NOT演算子を使った例
x = 10
# 「xが5未満」の判定(False)を、notで真逆にひっくり返す
if not x < 5:
print("xは5より小さくない(5以上である)") # 反転してTrueになるため実行されます
一目でわかる「真理値表」のまとめ
それぞれの演算子に True や False が飛び込んできたとき、最終的にどのような結果(True / False)になるのかを一覧表にまとめました。これをプログラミングの世界では真理値表(しんりちひょう)と呼びます。
| 演算子の種類 | 条件1 | 条件2 | 最終的な判定結果 | 判断の基準 |
|---|---|---|---|---|
| and(かつ) | True | True | True | 両方とも True のときだけ合格 |
| True | False | False | ||
| False | False | False | ||
| or(または) | True | False | True | 片方でも True があれば合格 |
| False | True | True | ||
| False | False | False | ||
| not(反転) | True | --- | False | 入ってきた値をあべこべにする |
| False | --- | True |
ワンランク上の応用:not in 演算子でスマートに書く
実務のコードでは、not を単体で使うよりも、リストや文字列の中に「特定の要素が含まれていないこと」を判定する not in という組み合わせで使うケースが非常に多いです。コードが英語の文章のように読めるため、可読性が劇的に上がります。
# 禁止ワードリストのチェック
banned_words = ["error", "fail", "deny"]
user_input = "success_data"
# 不適切なワードが含まれて「いない」なら処理を進める
if user_input not in banned_words:
print("安全なデータです。登録を進めます。")
# ※悪い書き方の例(可読性が低い)
# if not (user_input in banned_words):
# ...
論理演算子の優先順位と丸括弧 () のルール
Pythonでは、複数の論理演算子が混ざっている場合、①not ➔ ②and ➔ ③or の順番で自動的に評価されます。
しかし、この優先順位を暗記していないと意図しないバグを埋め込む原因になります。そのため、少しでも複雑になる場合は丸括弧 () を使って、先に計算させたいグループを明示するのが開発現場の共通ルールです。
x = 10
y = 20
z = 30
# 括弧で囲むことで、まず「xが5より大きい、またはyが25より大きい」を評価し、
# その結果に対して「zが35より小さい」をandで評価します。
if (x > 5 or y > 25) and z < 35:
print("条件が成立しました")
まとめ
and、or、not は、あらゆる条件分岐の司令塔となる論理演算子です。「すべて満たすなら and」「どれか1つでも or」「結果をひっくり返すなら not」という基本を、いつでも真理値表ベースで思い出せるようにしておきましょう。実務では、条件が3つ以上重なったら迷わず丸括弧 () をつけて可読性を守ること、そして not in などのPythonらしい便利な合わせ技を積極的に取り入れることで、シンプルで美しいコードが書けるようになります。