今回はブール演算子(and・or・not)編です。
問題
次のコードを実行した結果を答えなさい
price = 1200
is_hungry = True
if price <= 1000 and is_hungry:
print("ここでご飯を食べます")
if price > 1000 or not is_hungry:
print("今はガマン・・・・")
解説
今はガマン・・・・
and, or, not を使用することで、
複雑な条件を表現できるようになります。
・and → 「かつ」。左右が両方ともTrueの場合にTrueとなる
・or → 「または」。左右がどちらかがTrueの場合にTrueとなる
・not → 否定。続く条件の真偽を反転する
今回の場合、
1つ目のifは「False かつ True」なので、False
2つ目のifは「True または False」なので、True
となり、2つ目のifの中身のみ実行されます。
※実際には、これらの3つは「bool演算子」といい、条件以外にも使用できます。
挙動がわかりづらいのですが、試験にはちょこちょこ出る(?)ので、
余力があれば押さえておきましょう。
(左側がFalsyな値かどうかで、右と左どちらを返すかが決まります)
参考:
https://zenn.dev/bugbearr/articles/69e1101ccc676a4b28b6
・and 左が偽なら左, そうでなければ右
(「かつ」→ どちらかが偽なら偽となるので、左が偽なら「左だけ」評価すればよい)
・or 左が真なら左, そうでなければ右
(「または」→ どちらかが真なら真となるので、左が真なら「左だけ」評価すればよい)
print("andの実験")
print(1 and 2) #2
print(1 and 0) #0
print(0 and 2) #0
print("orの実験")
print(1 or 2) #1
print(1 or 0) #1
print(0 or 2) #2