如何用Python的for循环实现反向索引的井字棋棋盘打印
用For循环实现井字棋棋盘打印(数字键盘反向索引)
当然可以用for循环来搞定这个需求,不仅能解决你之前的输出异常问题,代码还会更整洁、更容易维护!咱们先把索引对应关系理清楚,再一步步实现。
核心索引映射规则
你需要的棋盘布局对应列表索引的关系是:
- 第一行(最上方):列表索引7、8、9
- 第二行:列表索引4、5、6
- 第三行(最下方):列表索引1、2、3
完整实现代码
def display_board(board): # 预先定义每行对应的棋盘列表索引分组 row_index_groups = [[7, 8, 9], [4, 5, 6], [1, 2, 3]] for row_num, indices in enumerate(row_index_groups): # 拼接当前行的棋子内容,用 | 分隔每个位置 current_row = " | ".join([board[idx] for idx in indices]) # 打印带空格的行内容,让格式更美观 print(f" {current_row} ") # 只有非最后一行才打印分隔线 if row_num != len(row_index_groups) - 1: print("---+---+---") # 测试你的示例棋盘 test_board = ['O','O','X','X','X','O','X','O','X'] display_board(test_board)
代码运行结果
运行上面的代码后,会输出符合要求的棋盘:
X | O | X
---+---+---
X | X | O
---+---+---
O | O | X
代码说明
- 索引分组:
row_index_groups把每行需要的列表索引按顺序打包,遍历的时候就能直接拿到对应行的所有棋子元素 - 行内容拼接:用列表推导式快速取出当前行的元素,再通过
join()方法用|分隔,避免手动拼接字符串的繁琐 - 分隔线控制:通过
enumerate()拿到行号,判断不是最后一行时打印分隔线,保证棋盘格式正确
这种用for循环的方式,相比重复写多个print语句,最大的优势是扩展性强——以后如果要调整棋盘行数、修改分隔符或者改变索引对应关系,只需要修改row_index_groups或者分隔符字符串就行,不用逐行修改print代码。
内容的提问来源于stack exchange,提问作者Kwame Benqazy
相关产品推荐
相关产品推荐

