You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

代码说明

  1. 先验证输入是否为奇数,非奇数则给出提示
  2. 用'#' * n快速生成顶部和底部的#行,比循环打印更简洁高效
  3. 中间循环遍历n行:
    • 前半部分行数的前置空格随行数递增,后半部分随行数递减,实现对称效果
    • 通过计算星号间的空格数,确保每行总长度严格等于n
  4. 拼接每行内容后直接打印,保证排版正确

输入n=5时,输出结果:

#####
*   *
 * * 
*   *
 * * 
*   *
#####

内容的提问来源于stack exchange,提问作者Phoebus Apollon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:01:26