python - 元组值在游戏逻辑中没有被准确比较
问题描述
我正在用 Python 重构井字游戏应用程序的代码,但是在重写检查获胜条件的函数时遇到了麻烦。
这就是我现在拥有的
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
它自己。由于具有值的元组被认为是真实的,因此您的条件(之后的所有内容if
)将始终评估为真!如果你想比较('X', '-', '-')
too
和 to x
,你需要这样做:
if ('X', '-', '-') == o or ('X', '-', '-') == x
推荐阅读
- mysql - 第 1 行的错误 1 (HY000): (Errcode: 13 "Permission denied")
- .net - 通过递增获取字母数字字符串的最佳方法
- docker - Dokcer - 在 docker 文件中更改 /etc/hosts 的权限会出错
- python - 错误:错误:OpenCV(3.4.1) resize.cpp:4044: 错误:(-215) ssize.width > 0 && ssize.height > 0 in function cv::resize
- html - 单击时未检查自定义单选按钮
- orientation - CameraX VideoCapture 方向与 ImageCapture 方向不一致
- python - * 不支持的操作数类型:'function' 和 'int'
- python - 使用 Pandas 从 excel 中删除行
- web-applications - 带有私人网络应用的 Google 助理交互式画布
- machine-learning - Pytorch 变压器模型中的大的爆炸性损失