如何用单个for循环和if-else语句实现Python正倒三角星号图案?
单个for循环实现对称星号图案
完全可以用单个for循环加if-else语句实现这个对称星号图案,下面基于你写的代码修改并说明逻辑:
目标图案:
* ** *** **** ***** **** *** ** *
你目前的代码:
stars = "*" for i in range (0,10): if i <5: print(stars) stars = stars + "*" # else:
你现有代码的问题是:当i=4的循环结束后,stars会变成"******"(因为每次打印完都额外追加了一个星号),所以进入else分支时需要调整星号的减少逻辑。
修改后的完整代码(基于你的原有逻辑)
stars = "*" for i in range(10): if i < 5: print(stars) stars += "*" else: # 第一次进入else时,先抵消掉i=4时多追加的那个星号,之后每次循环减一个 stars = stars[:-2] if i == 5 else stars[:-1] print(stars)
更简洁的优化写法
如果调整正三角部分的逻辑,先追加星号再打印,代码会更清爽:
stars = "" for i in range(10): if i < 5: stars += "*" print(stars) else: stars = stars[:-1] print(stars)
逻辑说明
- 前5次循环(
i从0到4):每次给stars加一个星号再打印,依次输出1到5个星,形成正三角。 - 后5次循环(
i从5到9):每次去掉stars的最后一个星号再打印,依次输出4到1个星,形成倒三角,两者拼接就是你要的对称图案。
内容的提问来源于stack exchange,提问作者Thandi
相关产品推荐
相关产品推荐

