首页 > 解决方案 > 元组值在游戏逻辑中没有被准确比较

问题描述

我正在用 Python 重构井字游戏应用程序的代码,但是在重写检查获胜条件的函数时遇到了麻烦。

这就是我现在拥有的

x = ('X', 'X', 'X')
o = ('O', 'O', 'O')

if ('X', '-', '-') == o or x:
    print(True)

即使显示的字符串显然不是与之比较的字符串之一,这也会返回 True 。然而更奇怪的是,当我将它与一个元组进行比较时

if ('X', '-', '-') == o:
    print(True)

True 不会被返回。有人可以解释为什么会发生这种情况

标签: pythonbooleantuples

解决方案


好的,让我们分解一下。你编写代码的方式,你有件事要比较,看看它们是否“真实”:

  • ('X', '-', '-') == o
  • x

or你的条件的一半是x它自己。由于具有值的元组被认为是真实的,因此您的条件(之后的所有内容if)将始终评估为真!如果你想比较('X', '-', '-')too和 to x,你需要这样做:

if ('X', '-', '-') == o or ('X', '-', '-') == x


推荐阅读