如何绘制中间共享块、高度为2n-1的n个重叠菱形?
修正重叠菱形绘制代码
需求说明
- 创建n个高度为
2n-1的菱形,以指定字符b作为块元素 - 所有菱形在中间位置重叠,即共享中间层的块元素(中间行的重叠部分合并为连续的块)
原代码问题
- 每个菱形都添加了独立的前置空格,导致菱形排列错位
- 中间行未处理重叠逻辑,输出多个独立块而非连续合并的块
- 非中间行的菱形间隔空格过大,不符合重叠效果
修正后的代码
def draw_diamonds(n, b): height = 2 * n - 1 for i in range(height): # 计算当前行的块长度与前置空格 if i < n: block_len = 2 * i + 1 leading_spaces = n - i - 1 else: block_len = 2 * (height - i) - 1 leading_spaces = i - n + 1 # 初始化当前行的第一个菱形 line = " " * leading_spaces + b * block_len # 添加剩余n-1个菱形 for j in range(1, n): if i == n - 1: # 中间行处理重叠:后续菱形仅补充不重叠的部分 overlap = 2 * j line += b * (block_len - overlap) else: # 非中间行:菱形间添加1个空格间隔 line += " " + b * block_len print(line) n, b = input().split() draw_diamonds(int(n), b)
代码说明
- 前置空格:仅第一个菱形添加前置空格,保证整体图案居中对齐
- 中间行重叠:通过计算重叠长度,后续菱形仅补充不重叠的块部分,实现中间层的共享合并,输出连续的块
- 非中间行间隔:菱形间仅添加1个空格,保证上下行的菱形排列符合重叠的视觉效果
内容的提问来源于stack exchange,提问作者Pochi Mochi
相关产品推荐
相关产品推荐

