Мой код указывает, что мой список находится вне диапазона в строке 9. Может кто-нибудь сказать мне, как это исправить? - PullRequest
0 голосов
/ 30 октября 2019
    v_leader=[]
        v_follower=[]
        distance=[]
        t_s=float(input("Enter the value of the time stamp"))
        r_t=float(input("Enter the vlaue of the reaction time"))
        i=t_s
        n=1
        while i<12.5:
            v_leader[n]=v_leader[n-1]+8*t_s
            i+=i
            n+=1
        m=n+1
        while m<n+11:
            v_leader[m]=v_leader[m-1]
        t=m+1
        while t<m+11:
            v_leader[t]=v_leader[t-1]-10*t_s
        print(v_leader)

Я пытаюсь исправить IndexError, вызванное этой строкой кода:

v_leader[n]=v_leader[n-1]+8*t_s

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вы не можете получить доступ к индексам, превышающим длину списка. Поскольку все ваши списки начинаются с 0 элементов, вызов v_leader[n] всегда выдаст ошибку, потому что нет элементов для доступа. Это можно исправить, если в первом цикле вы сбрасываете счетчик n и просто добавляете новые значения.

while i<12.5:
    v_leader[n] += [v_leader[n-1]+8*t_s]
    i+=i

В следующем цикле вы можете просто вызвать что-то вроде while m < len(v_leader) + 11:.

0 голосов
/ 30 октября 2019

Все ваши списки инициируются как пустые списки, поэтому в процессе зацикливания ваш список будет out of range. Вы можете использовать try...except, чтобы избежать этого.

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