如何为8×8棋盘程序添加左右两侧1-8的数字序号
解决棋盘左右添加数字序号的问题
你的代码已经实现了棋盘上下的a-h字母标识,但在左右添加1-8数字时出现重复输出,核心原因是没有将数字与每一行一一对应,而是重复遍历了数字列表。以下是修正后的代码:
sachy = [[0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 2, 0, 2, 0, 2], [2, 0, 2, 0, 2, 0, 2, 0], [0, 2, 0, 2, 0, 2, 0, 2]] poradi = ["a", "b", "c", "d", "e", "f", "g", "h"] # 若需匹配国际象棋标准行号(从上到下8-1),替换为 poradi_2 = list(range(8, 0, -1)) poradi_2 = [1, 2, 3, 4, 5, 6, 7, 8] # 打印顶部字母,预留数字位置对齐 print(" ", end="") for prvek in poradi: print(prvek, end=" ") print() # 遍历棋盘行,同时获取行索引 for idx, seznam in enumerate(sachy): # 打印左侧数字 print(poradi_2[idx], end=" ") # 打印棋盘内容 for prvek in seznam: print(prvek, end=" ") # 打印右侧数字 print(poradi_2[idx]) # 打印底部字母,预留数字位置对齐 print(" ", end="") for prvek in poradi: print(prvek, end=" ")
关键修改说明
- 顶部和底部字母前添加两个空格,与左右数字的位置对齐,保证排版整齐
- 使用
enumerate遍历棋盘行,通过行索引idx直接获取对应行的数字,避免重复遍历数字列表 - 每行开头打印左侧数字,结尾打印右侧数字,实现左右两侧的序号标识
- 可选:如果需要符合国际象棋棋盘的标准行号规则(从上到下为8到1),只需修改
poradi_2的定义即可
内容的提问来源于stack exchange,提问作者Bradley Kohr
相关产品推荐
相关产品推荐

