andif
を使用するステートメントがある場合、次のようなことができますか?and
or
if (a=0 or x=2) and y=1:
または、自分自身を繰り返して実行する必要がありますか:
if a=0 and y=1 or x=2 and y=2:
ブール代数は、典型的な代数の多くの特性を示します。and
以上の分配性は単調法則or
の 1 つであり、次のように述べられています。
x∧(y∨z) = (x∧y)∨(x∧z)
あなたの場合:
(y == 2) and ((a==0) or (x==2)) = ((y==2) and (a==0)) or ((y==2) and (x==2))
x ∧ ( y ∨ z ) ( x ∧ y ) ∨ ( x ∧ z)
どちらも問題なく動作します (まあ、2 番目のバージョンの最後にバグを修正した後)。しかし、それは比較が書かれた方法ではないことに注意してください! これを行う:
if (a == 0 or x == 2) and y == 1:
または同等:
if (a == 0 and y == 1) or (x == 2 and y == 1): # NOT y == 2 as you wrote
が等値演算子であることに注意してください。つまり==
、単一の=
手段の代入です。