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

Python 3实现空心菱形图案打印的问题求助

解决Python空心菱形打印问题

嘿,我来帮你搞定这个空心菱形的需求!你的现有代码能打出实心菱形,是因为每一行的所有位置都直接打印了*——要改成空心的,核心思路就是只在每行的首尾位置,或者菱形的最顶部/最底部行打印*,其他位置用空格填充。

修改后的代码

n = 5
half = (n + 5) // 2  # 提前计算菱形的半高,避免重复计算

# 打印菱形上半部分(从顶部到中间行)
for x in range(1, half + 1):
    # 打印行前的空格
    for y in range(half - x):
        print(" ", end="")
    # 计算当前行的总长度
    line_length = 2 * x - 1
    # 逐字符打印当前行
    for z in range(line_length):
        # 只有首尾位置,或是菱形最顶部行时打印*
        if z == 0 or z == line_length - 1 or x == 1:
            print("*", end="")
        else:
            print(" ", end="")
    print()  # 换行

# 打印菱形下半部分(从中间行下一行到底部)
for x in range(half + 1, n + 5):
    # 打印行前的空格
    for y in range(x - half):
        print(" ", end="")
    # 计算当前行的总长度
    line_length = (n + 5 - x) * 2 - 1
    # 逐字符打印当前行
    for z in range(line_length):
        # 只有首尾位置,或是菱形最底部行时打印*
        if z == 0 or z == line_length - 1 or x == n + 4:
            print("*", end="")
        else:
            print(" ", end="")
    print()  # 换行

关键修改点说明

  • 新增了half变量:把重复计算的(n+5)//2存起来,让代码更简洁易读,也减少出错概率。
  • 每行字符的判断逻辑:
    • 对于菱形的最顶部行(x=1)和最底部行(x=n+4),保持全*打印,这是菱形的两个端点。
    • 对于中间的每一行,只在第一个位置(z==0)和最后一个位置(z==line_length-1)打印*,其余位置用空格填充,这样就形成了空心效果。

运行这段代码后,你就能得到完美的空心菱形啦!

内容的提问来源于stack exchange,提问作者Trikstar Pandora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:01:42