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
相关产品推荐
相关产品推荐

