三角形与倒三角形图案打印逻辑错误排查求助
三角形与倒三角形打印问题修复
我尝试通过多层循环(先打印空格再打印星号)实现三角形和倒三角形图案,三角形打印正常,但倒三角形逻辑存在一处错误,无法定位问题。原代码如下:
for i in range(1,6): for j in range(10,15-i): print(" ",end=" ") for z in range(10,2*i+9): print("*",end=" ") print() for i in range(1,6): for j in range(10,i+10): print(" ",end=" ") for k in range(10,21-2*i): print("*",end=" ") print()
问题定位与修复
倒三角形的错误出在空格循环的次数计算上:
- 原三角形的空格次数是
5-i次(i从1到5时,依次为4、3、2、1、0次),实现了从多到少的空格,让星号向左对齐形成正三角。 - 倒三角形需要空格次数从0递增到4次(对应i从1到5),但原代码中
range(10,i+10)的循环次数是i次(i=1时1次,i=2时2次...),比实际需要多1次,导致每行星号都向右偏移了一组空格。
修复后的代码:
# 正三角形(保留逻辑并简化写法) for i in range(1,6): for j in range(5-i): print(" ",end=" ") for z in range(2*i-1): print("*",end=" ") print() # 修复后的倒三角形 for i in range(1,6): for j in range(i-1): print(" ",end=" ") for k in range(9-2*(i-1)): print("*",end=" ") print()
说明
- 简化了原代码中不必要的
range(10, x)写法,直接用循环次数控制空格和星号数量,逻辑更清晰; - 倒三角形的空格循环
range(i-1):i=1时循环0次(无空格),i=5时循环4次(4组空格),与正三角形的空格分布完全对称; - 星号循环
range(9-2*(i-1)):保证每行星号数依次为9、7、5、3、1,和正三角形成镜像。
内容的提问来源于stack exchange,提问作者codepractice
相关产品推荐
相关产品推荐

