如何在Python中创建网格并旋转90度N次(禁用NumPy)
问题分析与解决方案
你的代码输出None的核心原因是rotate90函数没有返回值,另外还有循环范围、旋转逻辑的问题,以下是具体修正:
原代码的问题点
- 无返回值:
rotate90函数只构造了newList但没有用return返回,所以调用后得到None - 循环范围错误:用
range(N-1)会少遍历一行一列,应该遍历整个N×N矩阵的元素 - 矩阵构造错误:直接把所有元素append到一维列表,没有按行拆分成二维结构
- 旋转逻辑错误:没有实现符合预期的90度旋转逻辑
修正后的代码
N = int(input()) measurements = [] for i in range(N): item = list(map(int, input().split())) measurements.append(item) def rotate90(matrix): n = len(matrix) rotated = [] # 从最后一列到第一列遍历,每列元素组成新矩阵的一行 for col in range(n-1, -1, -1): new_row = [] for row in range(n): new_row.append(matrix[row][col]) rotated.append(new_row) return rotated # 执行旋转并打印结果 newArray = rotate90(measurements) for row in newArray: print(' '.join(map(str, row)))
代码说明
- 函数新增
return rotated语句,返回构造好的旋转后矩阵 - 用
len(matrix)获取矩阵大小,避免依赖全局变量N - 按逆序遍历原矩阵的列,每列的元素从上到下取出组成新矩阵的一行,正好匹配你给出的预期输出
- 最后通过循环打印每行元素,格式化为空格分隔的字符串
运行修正后的代码,输入示例中的3和对应矩阵,就能得到预期输出:
1 2 3 3 5 7 4 6 9
内容的提问来源于stack exchange,提问作者Ibrahim Kasim
相关产品推荐
相关产品推荐

