生成数字金字塔方向错误,请求代码问题排查指导
数字金字塔代码修正方案
问题说明
我正在练习生成数字金字塔,期望的金字塔样式是从顶部的1开始,每一行向两侧递增数字(比如第5行是123454321),但当前代码生成的金字塔方向相反,中间列为数字"1"(比如第5行是543212345)。调整for循环后布局全乱了,求帮忙排查错误。
原代码
# Print numbers in different rows # Row separation for i in range(1, 10): # Print empty spaces before numbers for j in range(1, 9 - i + 1): # Spacing and new line print(" ", end="") # Printing of numbers after spacing for j in range(i, 0, -1): print(j, end="") for j in range(2, i + 1): print(j, end="") # Enter new line print()
错误原因
问题出在数字打印的循环顺序上:
- 第一个数字循环
range(i, 0, -1)是从i倒序打印到1,导致每行开头是最大的数,中间收束到1 - 第二个循环接着从2打印到i,最终形成了倒过来的金字塔结构
修正后的代码
# 打印数字金字塔 for i in range(1, 10): # 打印前置空格(保持居中布局) for j in range(1, 9 - i + 1): print(" ", end="") # 打印从1到i的递增部分 for j in range(1, i + 1): print(j, end="") # 打印从i-1到1的递减部分 for j in range(i - 1, 0, -1): print(j, end="") # 换行进入下一行 print()
修正逻辑说明
- 前置空格的循环无需改动,它根据当前行号计算需要填充的空格数,保证金字塔整体居中
- 第一个数字循环改为从1递增到i,实现每行从1开始向右侧递增到当前行的最大值
- 第二个数字循环改为从i-1递减到1,实现从最大值的前一位向左递减回1,最终形成
123...i...321的结构
内容的提问来源于stack exchange,提问作者Gerald
相关产品推荐
相关产品推荐

