You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发井字棋时如何将单个列表同时与另外两个列表比较

井字棋胜负判定相等比较逻辑问题解决

问题根源

你的写法不符合Python的or运算符运行规则:

Python中A or B的执行逻辑为:如果A的布尔判定结果为True,直接返回A,否则返回B。

非空列表的布尔值永远为True,所以(['X', 'X', 'X'] or ['O', 'O', 'O'])永远只会返回['X', 'X', 'X'],自然和['O','O','O']比较时返回False。

解决方案

方案1:拆分比较逻辑(直观易读)

把两次相等判断用or独立连接即可:

# target为你要判断的当前行/列/对角线列表
is_win = target == ['X','X','X'] or target == ['O','O','O']

方案2:用in运算符简化写法

把两个获胜标准列表放到元组中,直接判断目标列表是否在元组内,代码更简洁:

is_win = target in (['X','X','X'], ['O','O','O'])

验证示例

# 测试X获胜场景
x_line = ['X','X','X']
print(x_line == ['X','X','X'] or x_line == ['O','O','O']) # 输出True
print(x_line in (['X','X','X'], ['O','O','O'])) # 输出True

# 测试O获胜场景
o_line = ['O','O','O']
print(o_line == ['X','X','X'] or o_line == ['O','O','O']) # 输出True
print(o_line in (['X','X','X'], ['O','O','O'])) # 输出True

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:06:04