初心者が いちばんつまずきやすい「and と or の組み合わせ」 を、
図解・具体例・読み方のコツ つきでわかりやすく説明する。
and と or が混ざると、文章でもコードでも
「どっちが先に判定されるの?」「どう読むの?」
となりやすい。
まず結論(めちゃ大事)
and のほうが強い(先に判定される)
つまり…
A or B and C
は
A or (B and C)
と 自動で ( ) がある扱い になる。
数学の「掛け算が足し算より優先される」のと同じイメージ。
図で理解しよう
- 弱い(後) →
or - 強い(先) →
and
┌─ and(先に判定)
A or B
└─ and(先に判定) C
例 1|読み方でミスしやすいパターン
if age >= 20 or height >= 150 and weight <= 60:
どの順番で判定?
正しい順番
age >= 20 or (height >= 150 and weight <= 60)
読み方
- 「20歳以上なら OK」
- そうでなければ
- 「身長150以上 かつ 体重60以下なら OK」
❌ 間違った思い込み
「年齢20以上 かつ 身長150以上 かつ 体重60以下」ではない!
例 2|( ) を付けないと意味が変わる例
A or B and C
は
A or (B and C)
だが、
もし以下のようにしたいなら ( ) が必要:
(A or B) and C
順番が逆になる!
ケース別の読み方ガイド
ケース 1:or で区切った中の and
条件X or 条件Y and 条件Z
読み方:
- 「X が True なら OK」
- そうでなければ、「Y と Z が両方 True なら OK」
“大きな OR の中に小さな AND がある” イメージ。
図:
┌───────── OR ─────────┐
▼ ▼
[ X ] [ Y ]──AND──[ Z ]
ケース 2:and の中に or(意外と使う)
A and (B or C)
例:
is_member and (age >= 20 or has_coupon)
読み方:
- 「会員である」
- かつ
- 「年齢20以上 または クーポンを持っている」
図:
AND
┌─────┴─────┐
[ 会員 ] ┌──── OR ────┐
▼ ▼
[20以上] [クーポン]
ケース 3:not が入るとき
not (A and B)
→「A か B のどちらかが False」の意味
(De Morgan の法則)
(not A) or (not B)
に言い換え可能。
例:
not (age >= 20 and is_student)
→「20歳以上で学生である」ではない
→「20歳未満 OR 学生ではない」
実践例:読み方をミスりがちな3つ
例 1
if score >= 80 and passed or bonus:
正しくは:
(score >= 80 and passed) or bonus
読み方:
- 「80以上 かつ 合格フラグが立っている」
→ OK - または「ボーナスがある」
→ OK
例 2
if is_member or is_vip and age >= 18:
正しくは:
is_member or (is_vip and age >= 18)
読み方:
- 「会員ならOK」
- そうでなければ
- 「VIP かつ 18歳以上ならOK」
例 3
if not is_banned and (age >= 18 or has_parent):
読み方:
- 「禁止されておらず」
- さらに
- 「18歳以上 または 保護者同伴」
読み方の“黄金ルール” まとめ
1. and は強い → 先にまとまる
A or B and C
→ A or (B and C)
2. 迷ったら 必ず ( ) をつける
(A or B) and C
と
A or (B and C)
はまったく別物!
3. 複雑な条件は 日本語の文章に言い換える
例
A or (B and C)
→
- 「AならOK」
- それ以外なら「BとCが両方OKならOK」
文章に直すと一気に理解しやすくなる。
