Python三角形图案打印问题:空格输出错误求技术修正
修正三角形数值打印的空格对齐问题
原代码的空格计算存在重复叠加,且未考虑数字位数差异,导致三角形对齐混乱。以下是修正后的代码,同时适配用户输入最大值的需求:
max_num = int(input("请输入范围最大值: ")) max_temp = max_num no_of_lines = 0 subtractor = 1 while max_temp >= 1: no_of_lines += 1 max_temp = max_temp - subtractor subtractor += 1 counter = 1 # 每个元素固定宽度,适配两位数(若最大值为三位数可改为3) item_width = 2 for i in range(no_of_lines): current_items = i + 1 # 计算左侧居中空格:基于总行宽度与当前行宽度的差值均分 left_spaces = (no_of_lines * item_width - current_items * item_width) // 2 print(" " * left_spaces, end="") line_elements = [] for _ in range(current_items): if counter > max_num: line_elements.append(f"{'*':<{item_width}}") else: line_elements.append(f"{counter:<{item_width}}") counter += 1 print("".join(line_elements))
修改说明
- 修复空格计算逻辑:不再重复叠加空格,而是根据总行的最大宽度(行数×元素宽度)与当前行宽度的差值,计算出居中所需的左侧空格,确保三角形整体居中。
- 统一元素宽度:用固定宽度格式化每个数字和填充符号
*,解决一位数与两位数宽度不一致导致的行内对齐混乱问题。 - 改为用户输入最大值:符合需求中“提示用户输入范围最大值”的要求,不再固定为37。
- 简化元素拼接:用列表收集行内元素再拼接,代码更简洁易读。
输入最大值37时,输出的三角形会完全居中对齐,最后一行不足的部分用*填充,符合完整三角形的要求。
内容的提问来源于stack exchange,提问作者Abinash Dash
相关产品推荐
相关产品推荐

