Python井字棋:如何判断一行全为X/O?语法问题解惑
Python井字棋行判断问题解析
语法失效原因
你写的('X' or 'O')在Python里的逻辑不是“等于X或者O”,而是逻辑或运算的求值规则:or会返回第一个为“真”的表达式。因为非空字符串在Python里属于真值,所以'X' or 'O'直接返回'X',你的判断就变成了board[1] == board[4] == board[7] == 'X',自然对O完全无效。
单行实现方案
给你几个实用的单行写法:
- 最直观的写法:先判断三个元素相等,再验证是X或O
if board[1] == board[4] == board[7] and board[1] in ('X', 'O'): - 用
all()函数批量判断元素一致,适合扩展到更多元素的场景:if all(cell == board[1] for cell in board[1::3]) and board[1] in ('X', 'O'): - 也可以先判断是否为有效棋子,再判断相等(逻辑上更高效,提前排除无效值):
if board[1] in ('X', 'O') and board[1] == board[4] == board[7]:
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

