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

如何用Python绘制指定样式菱形?现有代码输出不符合需求

修正Python菱形打印代码问题

用户希望打印特定样式的菱形,编写的Python代码运行结果不符合预期,原代码及输出如下:

原代码

n = int(input("n ="))

for i in range(n):
    for j in range(2*n-i-1):
        print (" ",end="")
    for k in range(2*i+1):
        print(i,end="")
    print()

for a in range(n-2,-1,-1):
    for b in range(n-a+i):
        print (" ",end="")
    for c in range(2*a+1):
        print(n,end="")
    print()

原输出

0
        111
       22222
      3333333
     444444444
      5555555
       55555
        555
         5

问题分析与修正

原代码存在三个核心问题:

  • 上半部分空格数量计算错误,导致整体偏移过大
  • 下半部分空格计算误用了上半循环的变量i,逻辑混乱
  • 下半部分打印固定值n,而非对应层级的数值a

修正后的代码如下:

n = int(input("n ="))

# 打印上半部分(含中间行)
for i in range(n):
    # 前置空格数 = n - i - 1
    for j in range(n - i - 1):
        print(" ", end="")
    # 打印2*i+1个当前层级数字
    for k in range(2*i + 1):
        print(i, end="")
    print()

# 打印下半部分(从中间行下一行倒序)
for a in range(n-2, -1, -1):
    # 前置空格逻辑与上半部分统一
    for b in range(n - a - 1):
        print(" ", end="")
    # 打印对应层级的数字a
    for c in range(2*a + 1):
        print(a, end="")
    print()

修正后输出示例(n=5时)

0
   111
  22222
 3333333
444444444
 3333333
  22222
   111
    0

内容的提问来源于stack exchange,提问作者Christian Patrick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:32:13