输入为6时空心倒半金字塔代码输出7个星号的问题排查
问题分析与修复
你的代码问题出在条件判断结构和多余输出语句上:
- 当
i == n时,第一个独立if执行print(n*'*', end='')后,会继续判断第二个if,由于i == n不满足i>1 and i<n,会进入else分支额外打印一个*,导致第一行多了1个星号(6+1=7)。 - 循环末尾的
print()会在每一行后多输出一个空行,破坏整体格式。
修正后的代码
n = int(input()) for i in range(n, 0, -1): if i == n: print('*' * n) elif 1 < i < n: print('*' + ' ' * (i - 2) + '*') else: print('*')
代码说明
- 改用
if-elif-else结构,确保每个循环迭代只会执行一个输出分支,避免重复打印。 - 移除多余的
print(),每个分支直接输出对应行的内容,保证格式匹配需求。 - 输入6时,输出结果完全符合你要的空心倒半金字塔:
**
*
内容的提问来源于stack exchange,提问作者Avinash Jha
相关产品推荐
相关产品推荐

