下記にif文が2つありますが、カッコの有無で真偽が異なります。
chatgptに質問しましたが、納得のいく回答が得られませんでしたので、質問いたしました。
ご存知の方おられましたら、ご教示お願いいたします。
Python
1menu = "abd" 2if "a" in menu or "b" in menu or "c" in menu and "d" not in menu: 3 print(location(), "true") 4else: 5 print(location(), "false") 6 7menu = "abd" 8if ("a" in menu or "b" in menu or "c" in menu) and "d" not in menu: 9 print(location(), "true") 10else: 11 print(location(), "false")
2023.04.21 18:35 /Users/test.py:123 [1] <module> true
2023.04.21 18:35 /Users/test.py:131 [2] <module> false
以下ChatGPTの回答です。
and演算子の方がor演算子よりも優先順位が高いため、and演算子の評価が先に行われます。
- 括弧で囲まれた部分
- not
- and
- or
したがって、以下のように評価されます。
- "a" in menu を評価する。
- "b" in menu を評価する。
- "c" in menu を評価する。
- 3と"d" not in menuをand演算子で評価する。
1〜4の結果をor演算子でつなげた結果を求める。
つまり、"4" not in menuの評価は3とand演算子でまとめて行われます。
Pythonではor演算子は左から右に評価され、左辺がTrueの場合は右辺の評価を行いません。

回答3件
あなたの回答
tips
プレビュー