Python中布尔运算符的属性

时间:2013-09-17 01:30:43

标签: python boolean

如果我的if语句使用andor,我可以执行以下操作:

if (a=0 or x=2) and y=1:

或者我必须重复自己并做:

if a=0 and y=1 or x=2 and y=2:

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)

布尔代数展示了典型代数的许多属性。 andor的分配是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)