如何实现两段Python代码的输出在同一区域合并显示?
合并代码输出对齐问题解决方法
我想把两段代码的输出合并,期望呈现的格式是:
0 1 2 0 ? ? ? 1 ? ? ? 2 ? ? ?
但实际输出变成了这样:
0 1 2 0 1 ? ? ? ? ? ?
我的代码如下,不知道怎么把输出整合对齐:
import random rows = [3] columns = [4] def rowscol(): for j in range(columns[0]): print(" " * 1, end="") print(j, end="") print() for i in range(rows[0]): print(i) rowscol() def create_game_board(rows, columns): board = [[random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ") for _ in range(columns[0])] for _ in range(rows[0])] # 如果单元格总数是奇数,把最后一个设为未使用单元格 if (rows[0] * columns[0]) % 2 != 0: board[-1][-1] = "@" return board board = create_game_board(rows,columns) # 显示游戏板的函数 def display_board(board): pad = " " * 30 for row in board: line = pad + " ".join('?' if column != '@' else '@' for column in row) print(line) display_board(board)
问题根源
rowscol()打印行号后直接换行,没有预留后续内容的位置display_board()添加了30个空格的缩进,导致棋盘内容和行号完全脱节
修复后的代码
把行号、列标题和棋盘内容的打印逻辑整合到一个函数里,实现对齐:
import random rows = [3] columns = [4] def create_game_board(rows, columns): board = [[random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ") for _ in range(columns[0])] for _ in range(rows[0])] # 如果单元格总数是奇数,把最后一个设为未使用单元格 if (rows[0] * columns[0]) % 2 != 0: board[-1][-1] = "@" return board board = create_game_board(rows,columns) # 整合后的对齐显示函数 def display_aligned_board(board, rows, columns): # 打印列标题,开头留两个空格匹配行号宽度 print(" ", end="") for j in range(columns[0]): print(f"{j} ", end="") print() # 逐行打印行号和对应棋盘内容 for i in range(rows[0]): print(f"{i} ", end="") line = " ".join('?' if col != '@' else '@' for col in board[i]) print(line) display_aligned_board(board, rows, columns)
修复说明
- 取消冗余的
rowscol()函数,把列标题和行号的打印逻辑合并到统一的显示函数中 - 列标题前预留两个空格,和行号的宽度对齐,保证整体排版整齐
- 每行先打印行号,再直接输出对应行的棋盘内容,去掉多余的缩进
- 用格式化字符串保证每个列号后带空格,进一步优化排版一致性
内容的提问来源于stack exchange,提问作者user19600611
相关产品推荐
相关产品推荐

