Python四子棋开发:如何以带+/-的网格打印二维数组并显示行列号?
四子棋棋盘打印解决方案
问题拆解
你当前的代码存在几个核心问题:
- 没有打印顶部的列号,无法直观看到列索引
- 把网格分隔线和内容行的打印逻辑混在一起,导致落子符号根本没机会显示
- 单元格没有预留对齐空间,格式和预期不符
修复后的代码
# 初始化6行6列的棋盘(标准四子棋是6行7列,可根据需求调整行列数) board = [['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', '', '', '', ''], ['', '', 'x', '', '', '']] # 示例:在第5行第2列(索引从0开始)落子 # 打印顶部列号 col_count = len(board[0]) print(" ", end="") for col in range(col_count): print(f"{col:^4}", end="") # 列号居中,占4个字符宽度,和下方单元格对齐 print() # 打印棋盘主体 for row_idx, row_content in enumerate(board): # 打印每行内容上方的分隔线 print(" +", end="") for _ in range(col_count): print("---+", end="") print() # 打印行号和当前行的内容 print(f"{row_idx}|", end="") for cell in row_content: # 空单元格显示空格,有落子则显示符号,都居中占3位 print(f" {cell if cell else ' ':^3}|", end="") print() # 打印最后一条分隔线,闭合棋盘底部 print(" +", end="") for _ in range(col_count): print("---+", end="") print()
代码说明
- 列号打印:用
f"{col:^4}"让每个列号居中在4字符宽度内,和下方的单元格完美对齐 - 网格分隔线:每行内容的上下都打印
+---+重复列数的横线,保证棋盘的网格结构清晰 - 内容行处理:通过
enumerate直接获取行号,每个单元格自动处理空值(显示空格),落子符号会居中显示在格子里,格式统一为| 内容 | - 落子适配:只要在二维数组的对应位置存入符号(比如'x'或'o'),运行代码就会自动显示在正确位置
实际输出效果
运行后会得到和你预期一致的格式:
0 1 2 3 4 5 +---+---+---+---+---+---+ 0| | | | | | | +---+---+---+---+---+---+ 1| | | | | | | +---+---+---+---+---+---+ 2| | | | | | | +---+---+---+---+---+---+ 3| | | | | | | +---+---+---+---+---+---+ 4| | | | | | | +---+---+---+---+---+---+ 5| | | x | | | | +---+---+---+---+---+---+
内容的提问来源于stack exchange,提问作者Umer iqbal
相关产品推荐
相关产品推荐

