Сейчас я пишу симуляцию гравитации, и в моем коде появляется ошибка типа - PullRequest
0 голосов
/ 12 марта 2020

Проблема возникает в строке 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])

1 Ответ

1 голос
/ 12 марта 2020

Когда ваш код выполняет строку a = (r[i][k]), a становится целым числом, а не списком, как это было во входных данных этой функции. Это приводит к сбою append, поскольку вы не можете append получить целое число.

Я ожидаю, что вы намеревались создать другую переменную для использования в своем вычитании с b - убедитесь, что вы используете имя, которое еще не определено в вашей области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...