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
相关产品推荐
相关产品推荐

