Python实现n×n金字塔填充矩阵 输入2输出[[1,1],[1,1]]问题排查
代码问题梳理
- 矩阵维度错误:你定义
k = N - 1,初始化时用range(k)生成矩阵,最终得到的是(N-1)×(N-1)的矩阵,不符合要求的n×n规格,比如n=2时只能生成1×1的矩阵,和需求不符。 - 矩阵被错误清空:外层循环每次迭代时都执行
matrix = [],直接把初始化好的矩阵重置为空列表,之前的所有赋值操作全部失效,这是输入2输出空列表的直接原因。 - 缺失核心填充逻辑:代码完全没有实现「沿行/列向中心移动数值逐次加1」的填充规则,也没有正确的打印逻辑,循环内直接打印空matrix自然得不到正确结果。
修正方案
该矩阵的填充规则可以简化为:每个位置(i,j)的数值等于该位置到矩阵四个边界的最小距离加1,完全符合所有示例要求。
修正后代码如下:
n = int(input("Enter N value:")) matrix = [] for i in range(n): current_row = [] for j in range(n): # 计算当前位置到上、左、下、右四个边界的最小距离 min_distance = min(i, j, n - 1 - i, n - 1 - j) current_row.append(min_distance + 1) matrix.append(current_row) # 输出整数嵌套列表 print(matrix)
测试结果
- n=2输出:
[[1, 1], [1, 1]],符合预期 - n=4输出:
[[1, 1, 1, 1], [1, 2, 2, 1], [1, 2, 2, 1], [1, 1, 1, 1]],符合对称矩阵要求 - n=5输出:
[[1, 1, 1, 1, 1], [1, 2, 2, 2, 1], [1, 2, 3, 2, 1], [1, 2, 2, 2, 1], [1, 1, 1, 1, 1]],符合先增后减对称矩阵要求
内容的提问来源于stack exchange,提问作者Jia Long Liu
相关产品推荐
相关产品推荐

