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

Python打印右对齐星号三角形如何正确添加每行前置空格

问题定位

你要实现的是5行的右对齐直角三角形,预期输出如下:

*
   **
  ***
 ****
*****

初始代码仅逐行打印了对应数量的星号,没有加前置空格,因此输出左对齐图形;自行修改的版本存在两个明显逻辑错误:

  • 把前置空格的打印逻辑放到了遍历星号的内层循环中,每打印1个星号就会重复输出一遍空格,导致空格数量远超预期
  • 打印空格时没有指定end="",Python的print()函数默认会在内容末尾加换行符,直接把每行排版冲乱。
实现思路

逐行找规律即可:第i行(i取值从1到n)的固定结构是 n-i个前置空格 + i个星号,两部分内容在同一行输出,整行拼接完成后再换行。
给两个可直接运行的实现方案:

方案1:适配原有嵌套循环逻辑

保留你原本的双层循环写法思路,把空格打印移到星号循环的外层,先打完整行的空格,再打完整行的星号,最后统一换行:

n = 5
for i in range(1, n+1):
    # 打印当前行所有前置空格,不换行
    for j in range(n - i):
        print(' ', end='')
    # 打印当前行所有星号,不换行
    for j in range(i):
        print('*', end='')
    # 整行输出完毕,执行换行
    print()

方案2:字符串拼接简化写法

利用Python字符串支持乘法运算的特性,直接拼接出整行内容后一次性打印,不需要写内层循环,代码更简洁:

n = 5
for i in range(1, n+1):
    print(' '*(n-i) + '*'*i)
调试建议

写字符图形打印类代码时如果排版异常,优先排查两点:

  • 打印顺序是否符合行结构:整行共有的前置/后置内容,不要放到单字符的内层循环里重复执行
  • 非行尾的打印语句是否加了end="",避免非预期的自动换行打乱排版

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:09:24