当我试图在if和tuple中使用“|”运算符时,出现了一个奇怪的错误。在
#example
Myset = ((1, 3), (4, 6), (3, 1), (2, 2), (3, 5), (2, 4), (3, 3))
courd = (4,6)
if(courd[0] - 1 ,courd[1] - 1 in d ):
isSafe = True # work as expected
但如果我想试试这样的方法:
^{pr2}$我得到了
Traceback (most recent call last):
File "<pyshell#87>", line 1, in <module>
if((courd[0] - 1 ,courd[1] - 1 in d )| (2 == 2)):
TypeError: unsupported operand type(s) for |: 'tuple' and 'bool'
你需要使用parens,就像这样
现在,它将创建一个元组
^{pr2}$(courd[0] - 1, courd[1] - 1)
,并检查它是否在d
中。在下一个案例中将首先计算
(courd[0] - 1, courd[1] - 1 in d)
,这将创建一个元组。然后2 == 2
将被求值(因为|
的优先级低于==
),这基本上是一个布尔值。所以,你正在有效地这就是为什么你会得到那个错误。在
注意:
|
在Python中称为按位或。如果您指的是逻辑OR
,那么您需要这样写它现在,},一个布尔值),然后对{}求值,返回{}。现在逻辑
(courd[0] - 1, courd[1] - 1)
将首先求值以创建一个元组,然后检查该元组是否存在于d
(这将返回True
或{or
可以很好地使用两个布尔函数。在相关问题 更多 >
编程相关推荐