Python初学者求助:如何用嵌套循环实现指定形状打印?
Python打印指定对称星号形状问题解决
你需要打印的目标形状(以输入n=5为例)应为:
##### * * * * * * * * * * #####
你的代码存在这些问题:
- 中间行循环逻辑混乱,错误重复换行和打印星号,导致排版错乱
- 未正确计算每行的空格与星号位置,无法实现对称效果
- 行数计算错误,中间部分应输出n行而非
(n+1)/2行
以下是修正后的代码:
n = int(input("enter an odd number: ")) if n % 2 == 0: print("enter an odd number") else: # 打印顶部#行 print('#' * n) # 处理中间星号部分 for i in range(n): # 计算每行前置空格数 if i <= n // 2: spaces = i else: spaces = n - 1 - i # 计算星号间的空格数,保证行总长度为n middle_spaces = n - 2 - 2 * spaces # 拼接并打印当前行 line = ' ' * spaces + '*' + ' ' * middle_spaces + '*' print(line) # 打印底部#行 print('#' * n)
代码说明
- 先验证输入是否为奇数,非奇数则给出提示
- 用
'#' * n快速生成顶部和底部的#行,比循环打印更简洁高效 - 中间循环遍历n行:
- 前半部分行数的前置空格随行数递增,后半部分随行数递减,实现对称效果
- 通过计算星号间的空格数,确保每行总长度严格等于n
- 拼接每行内容后直接打印,保证排版正确
输入n=5时,输出结果:
##### * * * * * * * * * * #####
内容的提问来源于stack exchange,提问作者Phoebus Apollon
相关产品推荐
相关产品推荐

