Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用or运算符时,Python函数意外返回True_Python - Fatal编程技术网

当使用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
完全没有意义,应该删除