or をプログラミング初心者向けにかみ砕いて、例題つきで詳しく解説
やさしく順を追って説明するよ。コードはすぐコピーして試せるように短めにしてある。実行結果も書くから、動かして確認してみてね。
1. 基本イメージ(たとえ話)
or は日本語の「または」「どちらか一方でも」のイメージ。
- 条件A または 条件B のどちらかが当てはまれば「全体が成立(True)」になる。
- 両方とも当てはまらないときだけ「成立しない(False)」。
2. 真理値表(覚え方:両方FalseのときだけFalse)
A B A or B
False False → False
False True → True
True False → True
True True → True
ポイント:どちらか一方が True なら OK。両方 True でも True。
3. 基本的な使い方(if 文での例)
age = 9
if age <= 10 or age >= 80:
print("お断りします")
else:
print("ご利用できます")
Pythonageが 10 以下 または 80 以上のときに「お断り」になる例。- このコードでは
age = 9なので出力はお断りします。
4. 実行結果(すぐ試せる例)
# 例1
a = False
b = True
print(a or b) # -> True
# 例2
x = 0
y = 5
print(x > 0 or y > 0) # -> True (x>0 は False、y>0 は True)
# 例3
s = ""
t = "hello"
print(s or t) # -> "hello"(少し後で説明する「値としての or」)
Python5. 「短絡評価(ショートサーキット)」って何?
or は左から順に評価して、左側が True と判定されたら右側を評価しないという性質がある(これを短絡評価という)。
理由:左が True なら全体はもう True と確定するから右は調べる必要がないため。
実務的効果:
- 右側に重い処理や例外を起こす処理を書かない(または注意して書く)。
- よくある使い方:値の「デフォルト」指定(後述)。
例:
def expensive():
print("expensive呼ばれた")
return True
print(True or expensive()) # expensive() は呼ばれない -> "expensive呼ばれた" は出ない
Python6. or と and の組み合わせ(優先順位)
andはorより先に評価される(andの方が優先度高)。- 見にくくなるときは 必ず括弧
()を使う。
例:
# どの部分が先に評価されるか明示するために括弧を使う
a = True
b = False
c = True
result = a and (b or c) # b or c -> True, a and True -> True
Python括弧を忘れると意図と違う結果になることがあるので注意。
7. 少し発展:or は値も返す(初心者メモ)
Python の or は「ブールだけでなく値を返す」性質がある:
- 左から見て 最初に真(truthy)とみなされる値を返す。全部偽(falsy)なら最後の値を返す。
- 例:
""(空文字列)や0、空リスト[]は falsy、非空文字列や非ゼロは truthy。
print("" or "default") # -> "default"
print(0 or 42) # -> 42
print(None or "N/A") # -> "N/A"
print("a" or "b") # -> "a" (左が truthy だから右を見ない)
Pythonただし最初のうちは「条件判定で使う」と割り切った方が混乱しにくい。
8. よくある間違い・注意点
- 比較をチェーンでつなぐ場合に注意
if x > 0 or x < 10:は「x が 0 より大きい または 10 より小さい」 → 常に True(ほとんどの数はどちらかに当てはまる)。意図は0 < x < 10(両方成立)かもしれない。
→ 範囲チェックはif 0 < x < 10:と書くのが簡潔で安全。 orと|(ビット演算)は別物
論理和はor、ビット演算(整数の各ビットごとの or)は|。混同しないで。orの優先順位andが先に評価されるので複雑な式は括弧を使う。- 短絡評価に依存した書き方の注意
右側に副作用(ファイルを開く、リストを変更する、例外を投げる等)がある場合、左側の評価によっては右側が実行されないことを考慮する必要がある。
9. 練習問題(初心者向け)
各問題の下に答えと解説を載せるから、まず自分で予想してから確認してね。
問題1
a = False
b = False
print(a or b)
Python答え:False
解説:両方 False のときだけ False。
問題2
x = 3
print(x < 0 or x % 2 == 1)
Python→ どうなる?
答え:True
解説:x < 0 は False、x % 2 == 1 は True(3 は奇数)ので False or True → True。
問題3
name = ""
display = name or "ゲスト"
print(display)
Python→ 出力は?
答え:ゲスト
解説:name は空文字(falsy)だから or は右側の "ゲスト" を返す。デフォルト値代入の典型例。
問題4(短絡評価の確認)
def f():
print("fが呼ばれた")
return True
print(True or f())
Python→ 実行時の出力は?
答え:True(f の中の文字列は表示されない)
解説:左が True なので f() は呼ばれない(短絡評価)。したがって "fが呼ばれた" は画面に出ない。
問題5(and と or の組み合わせ)
a = False
b = True
c = False
print(a or b and c)
Python→ 出力は?
答え:False
解説:and が先に評価される → b and c = True and False = False。それから a or False = False or False = False。括弧で (a or b) and c にすれば結果は違うので注意。
まとめ(初心者がまず覚えること)
orは「どちらか一方が True なら全体 True」。- 真理値表を頭に入れておく(両方 False のときだけ False)。
- 複雑な式は括弧で優先度を明示する。
orは短絡評価する(左が True なら右は評価されない)。- 値を返す性質(デフォルト値の指定など)もあるが、最初は条件判定用途に集中しよう。
