在同一If语句中使用AND或运算符(Python)



所以,我正在挑战自己构建一个A.我启用了国际象棋游戏。现在我只是在用面向对象的方法研究游戏逻辑。事实证明,这是一个很好的方法。然而,当我在典当对象中定义一个方法来捕获另一块棋子时,我需要使用一个长的if..和..和..或语句。现在它并没有按照我需要的方式进行预成型。我想这是因为一条规则与运算符以及它们如何一起评估有关。在我刚刚完成的一门大学信息技术课程中,我似乎记得一些关于这方面的事情。我对算法进行了一些测试,可以确认问题包含在以下elif语句第一行的最后几个表达式中:

#检查是否有工件处于所需的移动位置。每个正方形由(x,y(坐标表示,这些坐标被存储为对象属性,并以工件名称为关键字,所占的正方形为值输入字典。

elif checkSquare(peicePosition, move) == True and move[1] - self.position[1] == 1 and move[0] == self.position[0] + 1 or move[0] == self.position[0] - 1:
self.position = move
self.firstMove = False
peicePosition[self.name] = self.position
return print("Capptured Peice") 

您可能遇到了操作顺序问题。就像我们在中学(或类似的学校(学到的PEMDAS一样,所有的AND运算都在or之前执行。这个网站详细介绍了逻辑和数学运算的顺序。试着添加一些括号,就像注释所说的那样。

最新更新