Принимая Array и integer в качестве аргументов и возвращая массив - PullRequest
0 голосов
/ 17 апреля 2020

Я создал простую функцию поиска расстояния, которая принимает 2 целых числа и 2 массива. Он рассчитывает расстояние, как показано, и возвращает расстояния в виде массива. Я не знаю почему, но я получаю ошибки. Любые идеи, почему и какие-либо советы, чтобы исправить?

xs = [1,2,3,4,5,6]
ys = [7,8,9,10,11,12]

def distance(t0, t1, x, y):
    distance = []
    for i in range(len(x)):
        distance[i] = (abs(t1 * x[i] + t0 + y[i])) / (((t1**2)+(1))**0.5) #the distance formula of a point to a line. point = (x,y) , line = t0+t1*x
    return distance

print(distance(3,6,xs,ys))


Traceback (most recent call last):
  File "ml2.py", line 10, in <module>
    print(distance(3,6,xs,ys))
  File "ml2.py", line 7, in distance
    distance[i] = (abs(t1 * x[i] + t0 + y[i])) / (((t1**2)+(1))**0.5)
IndexError: list assignment index out of range

1 Ответ

0 голосов
/ 17 апреля 2020

Ваш список distance имеет длину 0 (вы можете проверить это с помощью print len(distance)). Это означает, что у него нет индексов. Вы пытаетесь присвоить что-то для индекса 0, который не существует. Вероятно, вы хотите добавить в список:

distance.append((abs(t1 * x[i] + t0 + y[i])) / (((t1**2)+(1))**0.5))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...