如何解决Python星号三角形图案重复打印问题 且不使用break?
重复打印问题的根源
你现在的代码多套了一层完全没用的外层循环,这是图案重复的核心原因:
- 你要的逐行递减星号的倒三角,本质上只要从星号满值的长度,逐行减1打到星号长度为1就行,单循环就够实现
- 你写的两层循环里,内层遍历
i的循环本身就已经能走完一整个倒三角的全部行打印,外层遍历j的for j in range(random_num):没有绑定任何和打印内容相关的逻辑,只是把内层“打印一整个三角”的动作原封不动重复了random_num次——所以随机数取4的时候,整个三角就被完整打印了4遍,和你实际跑出来的结果完全对得上。
修正方法
直接删掉多余的外层j循环就行,全程用不到break语句,完全满足你提的作业约束,修正后的代码片段:
if random_num > 0: for i in range(random_num): print("*" * (random_num - i)) print()
random_num取4时的运行效果:
**** *** ** *
补充:你原来代码的缩进把整套三角打印逻辑全放到了外层j循环的管辖范围内,才会出现把单个三角重复打N次的问题,把打印逻辑提到最外层的判断块里、去掉多余的循环就好。
内容的提问来源于stack exchange,提问作者ian94
相关产品推荐
相关产品推荐

