Python循环打印五角星形状出错,寻求代码修正建议
Python打印五角星代码修正建议
你的代码在空格计算逻辑上存在偏差,导致输出的图形和预期的五芒星不符。以下是修正方案:
问题点梳理
- 上半部分循环的空格计算(
4*10-i)不符合五角星的对称结构,导致左右星号位置偏移;第10行的双段星号布局错误,应该是完整的中间横线。 - 下半部分循环的空格计算公式(
p*2-9、63-p)完全偏离了五芒星下半部分的收拢逻辑,造成图形严重错位。
修正后的代码
# 打印五角星上半部分(含中间横线) for i in range(1, 11): if i == 1: print(' ' * 19 + '*') elif i == 10: print('*' * 39) else: space_left = 20 - i space_mid = 2 * i - 3 print(' ' * space_left + '*' + ' ' * space_mid + '*') # 打印五角星下半部分 for p in range(1, 6): space_left = p + 9 space_mid = 37 - 4 * p print(' ' * space_left + '*' + ' ' * space_mid + '*')
代码逻辑说明
- 上半部分:
- 第1行:通过19个空格让单个星号居中,对应整个五角星的宽度(39个字符)。
- 第10行:打印39个连续星号,作为五芒星的中间交叉横线。
- 中间行:左侧空格随行数增加递减,星号间的空格随行数增加递增,实现上半部分的对称展开。
- 下半部分:
- 循环5次对应五芒星的5个下分支,左侧空格随行数增加递增,星号间的空格随行数增加递减,实现下半部分的对称收拢。
内容的提问来源于stack exchange,提问作者Preksha Parekh
相关产品推荐
相关产品推荐

