Python实现一行内打印两个棋盘的方法求助
两个棋盘横向并排打印的实现方法
要实现横向打印,关键是把两个棋盘的每一行对应拼接后输出,而不是直接分别打印。以下是具体方案:
1. 编写横向打印函数
直接写一个函数处理两个棋盘的行拼接:
def print_boards_side_by_side(board1, board2, label1="Board1", label2="Board2"): # 将棋盘字符串按换行拆成单行列表 lines1 = str(board1).split('\n') lines2 = str(board2).split('\n') # 打印标题与分隔线 print(f"{label1:<27} | {label2}") print('-' * 27 + ' | ' + '-' * 27) # 逐行拼接两个棋盘的对应行 for line_a, line_b in zip(lines1, lines2): print(f"{line_a:<27} | {line_b}")
2. 使用示例
创建棋盘实例后直接调用函数即可:
human_board = Board() viki_board = Board(hide=True) print_boards_side_by_side(human_board, viki_board, "玩家棋盘", "AI棋盘")
为什么用end参数不行?
你之前尝试的end参数只是修改print()的结尾字符,但你的Board.__str__()返回的字符串本身已经包含换行符,直接打印两个棋盘会让第二个棋盘接在第一个棋盘的最后一行后面,自然没法并排。
适配不同棋盘尺寸
如果以后修改棋盘大小(比如不是6x6),可以动态计算行宽,替换代码里的27:
# 动态获取第一个棋盘的最大行宽 max_width = max(len(line) for line in lines1) # 打印时用计算出的宽度 print(f"{label1:<{max_width}} | {label2}") print('-' * max_width + ' | ' + '-' * max_width) for line_a, line_b in zip(lines1, lines2): print(f"{line_a:<{max_width}} | {line_b}")
内容的提问来源于stack exchange,提问作者iMAN
相关产品推荐
相关产品推荐

