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

Python中解决8×8棋盘打印后多余空行引发的测试环境报错问题

解决棋盘输出后多余空行引发的输入报错问题

问题场景

你的代码在输出8×8数字棋盘后,皇后输入语句前出现多余空行,导致测试环境报错。尝试用textwrap.cleandoc修复时,又破坏了棋盘的格式与间距。

可行解决方案

方案1:重构棋盘字符串构建逻辑,避免末尾多余换行

把逐字符拼接字符串的方式改成按行收集后再拼接,精准控制换行数量,从根源上避免字符串末尾出现多余换行:

# Print the user board
from textwrap import dedent

n = 8  # 可根据实际需求调整值
rows = []
for i in range(n):
    row_content = ''
    for j in range(n):
        z = i * n + j
        row_content += ' '
        if z < 10:
            row_content += ' '
        row_content += str(z)
    rows.append(row_content)
s = '\n'.join(rows)
print(dedent(s))

queens = list(map(int, input("Queens: ").split()))

方案2:修改print语句结束符,取消额外换行

如果不想改动棋盘字符串的构建逻辑,直接在print时指定end='',阻止print自动添加换行,避免输出后出现多余空行:

# Print the user board
from textwrap import dedent

n = 8  # 可根据实际需求调整值
s = ''
for i in range(n):
    for j in range(n):
        z = i * n + j
        s += ' '
        if z < 10:
            s += ' '
        s += str(z)
    s += '\n'
# 用end=''取消print默认添加的换行
print(dedent(s), end='')

queens = list(map(int, input("Queens: ").split()))

原理说明

原代码中,字符串s末尾会多一个换行符,加上print函数默认在输出末尾添加换行,就导致了多余空行。上述两种方案要么避免s末尾出现多余换行,要么取消print的默认换行,既能解决空行问题,又能完整保留棋盘的原有格式。

内容的提问来源于stack exchange,提问作者Frankline Misango

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:30:55