Python 3.x 实现无填充斜杠菱形:简化diamond(num)函数咨询
看起来你想要的菱形结构其实有很清晰的规律,完全可以用更简洁的方式实现,不需要复杂的循环和字典操作。
先梳理下你给出的示例里的规律:
- 总共有
2*num行,上下各占num行 - 上半部分:第一行是单独的
/,剩下num-1行都是「空格+/」 - 下半部分:前
num-1行都是「空格+\ +空格+/」,最后一行是\/
基于这个规律,我们可以用列表乘法快速生成重复行,再拼接成最终结果,代码简洁又易读:
def diamond(num): # 生成上半部分的行 top = ["/"] + [" /"] * (num - 1) # 生成下半部分的行(注意反斜杠需要转义,所以用\\) bottom = [" \ /"] * (num - 1) + ["\\/"] # 合并所有行并换行分隔 return "\n".join(top + bottom)
测试一下这个函数的输出:
diamond(1)输出:
/ \/
diamond(2)输出:
/ / \ / \/
diamond(3)输出:
/ / / \ / \ / \/
完全匹配你给出的示例效果!
这种写法把重复的行用列表乘法直接生成,省去了复杂的逻辑判断,代码维护起来也更轻松。
内容的提问来源于stack exchange,提问作者user8872
相关产品推荐
相关产品推荐

