我目前正在写一个重力模拟,我在代码中得到了一个类型Error



问题出现在第29行:这是一个类型错误

我不知道我的参数哪里出了问题。它应该为每个a[i][k]分配一个值,但最终会显示以下错误消息:

a[i][k].append(g * m[i] * dr[k]/d3) 
TypeError: 'int' object is not subscriptable

这里的完整代码:

import numpy as np
from numpy import absolute
from numpy import power
r = [[1,1,1],[1,1,1],[0,0,0]]
v = [[0,0,0],[0,0,0],[0,0,0]]
a = [[0,0,0],[0,0,0],[0,0,0]]
m = [1,1,1]
O = -1
N = 3
def beschleunigung(O, N, m, r, a):
i = 0
k = 0
dr = [0,0,0]
d3 = 0
g = 1
for k in range(1,3):
a[i][k] = 0
for i in range(1,N):
if i != O:
for k in range(1,3):
a = (r[i][k])
b = (r[0][k])
dr[k] = a - b
d3 = np.power(np.absolute(dr),3)
for k in range(1,3):
a[i][k].append(g * m[i] * dr[k]/d3)

beschleunigung(O,N,m,r,a)
print(a[1])

当代码执行行a = (r[i][k])时,a将变为一个整数,而不是该函数输入中的列表。这会导致append失败,因为无法将append转换为整数。

我预计您打算创建另一个变量,用于b的减法运算——请确保使用范围中尚未定义的名称。

最新更新