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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:33:32