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)打印*,其余位置用空格填充,这样就形成了空心效果。
- 对于菱形的最顶部行(x=1)和最底部行(x=n+4),保持全
运行这段代码后,你就能得到完美的空心菱形啦!
内容的提问来源于stack exchange,提问作者Trikstar Pandora
相关产品推荐
相关产品推荐

