You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制不同大小圆形:Python代码报错及矩阵生成需求

问题解决:生成不同半径的圆坐标矩阵

错误原因分析

  1. 索引越界:原代码先遍历角度再遍历半径,第一次循环时Cosinus列表仅包含1个元素(索引0),但内层循环Radius从1开始,访问Cosinus[Radius]必然超出列表长度,触发IndexError。
  2. 逻辑错误:计算正弦值时误用了math.cos,应该用math.sin。
  3. 循环顺序与结构错误:你需要的是「半径为行、角度为列」的二维矩阵,但原代码循环顺序颠倒,且用一维列表存储,无法区分不同半径的数据集。
  4. 角度范围缺失: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:25:18