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

嵌套菱形图案生成Python代码错误排查与修正请求

解决嵌套菱形输出问题

你的问题核心是每个菱形单独输出,没有在同一画布上叠加,导致它们变成了独立的图形,而非嵌套效果。要实现嵌套,得先创建一个统一的"画布",把所有菱形的星号都画在这个画布上,最后一次性输出。

修正后的代码

def draw_nested_diamonds(sizes):
    # 计算最大菱形的高度,确定画布尺寸
    max_size = max(sizes)
    height = 2 * max_size - 1
    width = 2 * max_size - 1
    
    # 初始化画布,所有位置先设为空格
    canvas = [[' ' for _ in range(width)] for _ in range(height)]
    center = max_size - 1  # 画布中心坐标
    
    for size in sizes:
        # 遍历菱形的每一行
        for i in range(2 * size - 1):
            # 计算当前行的星号起始和结束位置
            if i < size:
                stars_start = center - i
                stars_end = center + i
            else:
                stars_start = center - (2 * size - 2 - i)
                stars_end = center + (2 * size - 2 - i)
            # 在画布上标记星号
            for j in range(stars_start, stars_end + 1):
                canvas[i][j] = '*'
    
    # 打印画布
    for row in canvas:
        print(''.join(row))

# 接收用户输入
n = int(input("请输入菱形数量: "))
sizes = [int(input(f"请输入第{i+1}个菱形的边长: ")) for i in range(n)]

draw_nested_diamonds(sizes)

代码说明

  1. 画布初始化:根据最大菱形的尺寸创建二维列表,初始全为空格,这是所有菱形的绘制载体。
  2. 中心定位:所有菱形都以画布中心为对称点绘制,保证嵌套的对齐效果。
  3. 逐菱形绘制:对每个菱形,计算每一行需要画星号的区间,把对应位置的空格替换成星号——后画的小菱形会覆盖大菱形的中间部分,自然形成嵌套效果。
  4. 统一输出:所有菱形绘制完成后,逐行打印画布内容,得到完整的嵌套图案。

当输入边长6、3、1时,输出就是你预期的多层嵌套菱形,而不是三个独立的图形。

内容的提问来源于stack exchange,提问作者Vincent Iyegbuye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:37:02