Python嵌套循环问题:如何生成反转星号三角形(size=3)
反转星号三角形的代码修改与逻辑拆解
没问题,我帮你把这个循环逻辑拆明白,然后一步步修改出你要的反转星号三角形~
先搞懂原代码的逻辑
你原来的代码是生成正三角,核心逻辑很简单:
size = 3 for line in range (1, size +1): for asterisk in range(1, line +1): print ('*', end = '') print()
- 外层循环
for line in range(1, size+1):控制一共打印size行,line就是当前的行号(从1到3)。 - 内层循环
for asterisk in range(1, line+1):控制当前行打印的星号数量——第1行打1个,第2行打2个,第3行打3个,所以输出正三角:
**
两种常见的「反转星号三角形」实现
根据你提到的提示(用空格),我给你讲两种最常用的反转效果:
1. 倒三角(从多到少的星号)
如果要实现和原图案完全上下反转的效果:
**
*
只需要修改内层循环的星号数量:原来的星号数等于当前行号,现在改成「总行数 - 当前行号 + 1」,这样第1行打3个,第2行打2个,第3行打1个。
修改后的代码:
size = 3 for line in range(1, size +1): # 星号数量 = 总行数 - 当前行号 + 1,用range控制循环次数 for _ in range(size - line + 1): print('*', end='') print()
2. 右对齐的反转三角(带空格)
如果要实现镜像反转的右对齐效果(这应该是提示里说的需要用空格的场景):
**
这个需要分两步:先打印空格,再打印星号:
- 空格数:总行数 - 当前行号(第1行要2个空格,第2行1个,第3行0个)
- 星号数:和原代码一样,等于当前行号
修改后的代码:
size = 3 for line in range(1, size +1): # 先打印对应数量的空格 for _ in range(size - line): print(' ', end='') # 再打印对应数量的星号 for _ in range(line): print('*', end='') print()
核心修改思路总结
不管哪种反转,核心都是明确每一行需要的空格数/星号数:
- 外层循环始终负责遍历每一行,不需要改动
- 内层循环根据需求,调整要打印的字符(空格/星号)和循环次数
内容的提问来源于stack exchange,提问作者Jezmond26
相关产品推荐
相关产品推荐

