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

如何用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

代码说明

  1. 索引分组:row_index_groups把每行需要的列表索引按顺序打包,遍历的时候就能直接拿到对应行的所有棋子元素
  2. 行内容拼接:用列表推导式快速取出当前行的元素,再通过join()方法用|分隔,避免手动拼接字符串的繁琐
  3. 分隔线控制:通过enumerate()拿到行号,判断不是最后一行时打印分隔线,保证棋盘格式正确

这种用for循环的方式,相比重复写多个print语句,最大的优势是扩展性强——以后如果要调整棋盘行数、修改分隔符或者改变索引对应关系,只需要修改row_index_groups或者分隔符字符串就行,不用逐行修改print代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:12:50