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

生成数字金字塔方向错误,请求代码问题排查指导

数字金字塔代码修正方案

问题说明

我正在练习生成数字金字塔,期望的金字塔样式是从顶部的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:44:50