如何用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
相关产品推荐
相关产品推荐

