绘制不同大小圆形:Python代码报错及矩阵生成需求
问题解决:生成不同半径的圆坐标矩阵
错误原因分析
- 索引越界:原代码先遍历角度再遍历半径,第一次循环时
Cosinus列表仅包含1个元素(索引0),但内层循环Radius从1开始,访问Cosinus[Radius]必然超出列表长度,触发IndexError。 - 逻辑错误:计算正弦值时误用了
math.cos,应该用math.sin。 - 循环顺序与结构错误:你需要的是「半径为行、角度为列」的二维矩阵,但原代码循环顺序颠倒,且用一维列表存储,无法区分不同半径的数据集。
- 角度范围缺失:
range(1,360)仅覆盖1-359度,缺少360度,不符合需求。
修正后的代码
import math # 初始化存储余弦、正弦值的二维矩阵 cos_matrix = [] sin_matrix = [] # 遍历每个半径(1到20) for radius in range(1, 21): current_cos = [] current_sin = [] # 遍历每个角度(1到360度) for angle in range(1, 361): # 角度转弧度,用math.radians更准确 radian = math.radians(angle) # 计算带半径缩放的余弦、正弦值 cos_val = math.cos(radian) * radius sin_val = math.sin(radian) * radius current_cos.append(cos_val) current_sin.append(sin_val) # 将当前半径的所有角度值加入矩阵 cos_matrix.append(current_cos) sin_matrix.append(current_sin)
代码说明
- 矩阵结构:
cos_matrix和sin_matrix都是20行(对应半径1-20)×360列(对应角度1-360)的二维列表。例如cos_matrix[0]是半径1下所有角度的余弦值,cos_matrix[19]是半径20下的所有余弦值。 - 弧度转换:用
math.radians()替代手动计算,精度更高且代码更简洁。 - 循环顺序:先遍历半径再遍历角度,确保每个半径对应完整的一行角度数据,避免索引越界问题。
- 数据存储:每个半径的角度值先存入临时列表,再加入矩阵,保证结构清晰。
内容的提问来源于stack exchange,提问作者Louis Tremblay
相关产品推荐
相关产品推荐

