如果我的if
语句使用and
和or
,我可以执行以下操作:
if (a=0 or x=2) and y=1:
或者我必须重复自己并做:
if a=0 and y=1 or x=2 and y=2:
答案 0 :(得分:1)
两者都可以正常工作(好吧,在修复第二版末尾的bug之后)。但要注意,这不是如何编写比较的!这样做:
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
请注意==
是相等运算符 - 单=
表示赋值。
答案 1 :(得分:1)
布尔代数展示了典型代数的许多属性。 and
对or
的分配是Monotone laws之一,并且如此说明:
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)