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

如何用单个for循环在Python中实现指定的星号图案?

问题分析与解决

你的代码只输出前5行的原因是:第二个elif的条件i in range(4, 0, -1)永远不会被触发——循环变量i的取值是0到8(range(9)生成的序列),当i >=5时,既不满足第一个if的条件,也不满足这个elif的条件,所以后面4行完全没执行。

修正方案

我们可以通过计算每一行对应的星号数量来实现需求:

  • 前5行(i从0到4):星号数为i + 1
  • 后4行(i从5到8):星号数为9 - i(比如i=5时,9-5=4;i=8时,9-8=1,正好符合递减的要求)

修正后的代码:

print("Pattern: ")

star = "*"

for i in range(9):
    if i < 5:
        print(star * (i + 1))
    else:
        print(star * (9 - i))

另一种简洁写法

如果你想简化判断逻辑,也可以用绝对值函数直接计算星号数量,无需if/else:

print("Pattern: ")

star = "*"

for i in range(9):
    # 以第5行(对应索引4)为中心,计算当前行与中心的距离,用5减去距离得到星号数
    count = 5 - abs(i - 4)
    print(star * count)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:32:04