如何在终端正确打印自定义方框类输出?Python动态绘制符号方框问题
终端方框打印问题修复方案
问题原因
现有代码存在两个逻辑错误导致打印错位:
print()函数使用逗号分隔参数时,会自动在参数之间插入额外空格,破坏中间行的宽度- 中间行的填充空格长度没有和上下边框的总宽度做动态对齐,硬编码逻辑无法适配不同尺寸参数
修复后代码
class Box: def __init__(self, width, height): self.width = width self.height = height def draw_box(self): # 生成上下边框,移除末尾多余的空格 border = ('+ ' * self.width).rstrip() border_length = len(border) print(border) # 动态计算中间行需要填充的空格长度 fill_content = ' ' * (border_length - 2) for _ in range(self.height - 2): # 字符串拼接避免额外空格 print(f'+{fill_content}+') print(border) # 不同尺寸测试 if __name__ == '__main__': # 测试5*5的方框 box_5_5 = Box(5, 5) box_5_5.draw_box() print('\n----分割线----\n') # 测试11*7的方框 box_11_7 = Box(11,7) box_11_7.draw_box()
修复说明
- 上下边框生成后用
rstrip()去掉末尾多余的空格,避免边框末尾多出空白 - 先计算上下边框的实际总长度,再动态推导中间行需要填充的空格数,不需要硬编码固定数值
- 中间行直接用字符串拼接输出,避免逗号分隔参数带来的自动空格问题,保证所有行宽度完全一致
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

