我正在用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不返回。有人可以解释为什么会发生这种情况吗
答案 0 :(得分:1)
好吧,让我们分解一下。编写代码的方式中,您要比较的是两项,以查看它们是否“真实”:
('X', '-', '-') == o
x
您的or
条件的一半是x
本身。由于具有值的元组被认为是真实的,因此您的条件(if
之后的所有内容)都会始终评估为true!如果您尝试将('X', '-', '-')
与o
和x
进行比较,则需要执行以下操作:
if ('X', '-', '-') == o or ('X', '-', '-') == x