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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:25:19