请求协助编写Python代码打印指定对称数字图案
Python代码生成对称数字图案
实现代码
size = 7 center = size // 2 # 计算图案中心的索引位置 for i in range(size): row = [] for j in range(size): # 计算当前位置到中心的最大横向/纵向距离 distance = max(abs(i - center), abs(j - center)) # 根据距离确定当前位置的数字 num = 1 + distance row.append(str(num)) # 拼接并打印当前行 print(''.join(row))
或者更简洁的单行生成版本:
size = 7 center = size // 2 for i in range(size): print(''.join(str(1 + max(abs(i - center), abs(j - center))) for j in range(size)))
逻辑解释
这个图案的核心是对称分层规律:
- 图案是7×7的正方形,中心位置索引为
3(Python索引从0开始,7//2=3),对应数字1。 - 从中心向外每扩展一层,数字加1:第二层数字为2,第三层3,最外层4。
- 每个位置的数字由它到中心的最大横向/纵向距离决定:
- 最外层位置(0,0),到中心的横、纵向距离都是3,取最大值3,数字为
1+3=4。 - 中心位置(3,3),距离为0,数字为
1+0=1。 - 位置(1,2),横向距离是2、纵向距离是1,取最大值2,数字为
1+2=3,完全匹配图案对应位置。
- 最外层位置(0,0),到中心的横、纵向距离都是3,取最大值3,数字为
新手友好提示
- 修改
size为其他奇数(比如5、9),就能生成不同大小的对称图案。 //是整数除法,用来获取中心索引;abs()用于计算绝对值,确保距离为正数。''.join()方法可以把列表里的字符串元素快速拼接成完整的一行文本。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

