在游戏逻辑中没有准确比较元组值



我正在用Python重构Tic-Tac-Toe应用程序的代码,但在重写检查获胜条件的函数时遇到了麻烦。

这就是我现在拥有的

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

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

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

True不会返回。有人能解释一下为什么会发生这种情况吗

好的,让我们来分解一下。按照你编写代码的方式,你有两个东西要比较,看看它们是否"真实":

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

您的or条件的一半是x本身。由于具有值的元组被认为是truthy,因此您的条件(if之后的所有内容(将始终求值为true!如果您试图将('X', '-', '-')ox进行比较,则需要执行以下操作:

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

最新更新