如果我有一个if
使用and
and的语句,or
我可以执行以下操作:
if (a=0 or x=2) and y=1:
还是我必须重复自己并做:
if a=0 and y=1 or x=2 and y=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
请注意,它==
是相等运算符 - 单一=
表示赋值。
布尔代数展示了典型代数的许多性质。and
over的分配性or
是单调定律之一,其表述如下:
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)