当使用or运算符时,Python函数意外返回True
免责声明:我是一个新手,所以这很可能只是我的一个愚蠢的疏忽(尽管,我认为这会使这个问题更容易解决) 当我运行以下代码时:当使用or运算符时,Python函数意外返回True,python,Python,免责声明:我是一个新手,所以这很可能只是我的一个愚蠢的疏忽(尽管,我认为这会使这个问题更容易解决) 当我运行以下代码时: xoro = [0 for i in range(9)] checkeD = [False for i in range(9)] potplay = 0 def checkeR(box_x): #This checks if a move has been played in a given box. global checkeD print(xoro[in
xoro = [0 for i in range(9)]
checkeD = [False for i in range(9)]
potplay = 0
def checkeR(box_x): #This checks if a move has been played in a given box.
global checkeD
print(xoro[int(box_x)]) #prints "0", as no augmentations were made to xoro since declaration
if xoro[int(box_x)] == 1 or 4:
checkeD[int(box_x)] = True
checkeR(0)
print(checkeD[0])
当通过if语句传递xoro[0]
时,应该发生的情况是,由于xoro[0]=0并且不符合if语句的要求,checkeD[0]应保持为false,但在运行时,代码返回checkeD[0]=True。更有趣的是,当我们删除或
操作符,使if语句if xoro[int(box_x)]==1:
时,代码按预期工作,返回False
我完全不知道发生了什么事情,如果有人能帮上忙,那就太好了。遗憾的是,如果语句不能像那样工作。你必须把这两种可能性都比较一下
if xoro[int(box_x)] == 1 or xoro[int(box_x)] == 4:
但是因为您使用的是或而不是和,所以您可以在中使用
if xoro[int(box_x)] in [1,4]:
如果您试图将xoro[int(box_x)]
与1和4进行比较,您应该使用类似的内容:xoro[int(box_x)]==0或xoro[int(box_x)]==4
,因为当前您的表达式的计算结果是xoro[int(box_x)]==1或bool(4)
,而bool(4)
始终是True
,global checkeD
完全没有意义,应该删除