游戏逻辑中未正确比较元组值

时间:2018-11-23 02:13:51

标签: python boolean tuples

我正在用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不返回。有人可以解释为什么会发生这种情况吗

1 个答案:

答案 0 :(得分:1)

好吧,让我们分解一下。编写代码的方式中,您要比较的是两项,以查看它们是否“真实”:

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

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

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