Python实现指定星形图案遇空格布局问题求助
Python 对称星形图案实现方案
你要实现的是对称菱形星形图案:上半部分从1个星开始,每行递增1个星直到n个星;下半部分从n-1个星开始,每行递减1个星直到1个星,所有行的星号都居中对齐。
你的现有代码问题:
- 上半部分仅输出星号,无前置空格,导致左对齐而非居中
- 下半部分
print("","*",end="")的写法会让星号间多出空格,且前置空格逻辑错误
修正后的代码:
def shape(n): # 上半部分:1个星 → n个星 for i in range(n): print(" " * (n - i - 1), end="") print("*" * (i + 1)) # 下半部分:n-1个星 → 1个星 for i in range(n-1, 0, -1): print(" " * (n - i), end="") print("*" * i) shape(10)
代码逻辑说明:
- 用字符串乘法
"" * 数量快速生成指定长度的空格/星号,比嵌套循环更简洁高效 - 上半部分:每行前置空格数随行数增加递减,星号数随行数增加递增,保证星号居中
- 下半部分:每行前置空格数随行数减少递增,星号数随行数减少递减,与上半部分完全对称
内容的提问来源于stack exchange,提问作者Edward Phillips
相关产品推荐
相关产品推荐

