Message IndexError: list index out of range !!

Fermé
asperge - 29 oct. 2018 à 12:17
 asperge - 29 oct. 2018 à 15:49
Bonjour,

Je dois créer une fonction permettant de calculer ce qu'on appelle une période d'échantillonnage d'un signal. Il s'agit en fait de calculer la moyenne des écarts entre deux valeurs successives d'une liste.
Voici le code :

def periode_e(T):
    ''' 
    retourne la période d'échantillonnage, en seconde, d'une liste non vide 
    d'instants 
    '''
    e=[] #liste des écarts entre deux valeurs de T
    i=0 # variable prenant la valeur de chaque écart
    for k in range (len(T)):
        i= T[k+1]-T[k] # Calcul de l'écart
        e.append(i) 
    return v_moyenne(e)


Lorsque je l'exécute, je ne rencontre aucun problème, aucune erreur de synthaxe ou autre. Par contre, lorsque je veux faire un test avec cette liste :

z=[6,10,13,50,62,63]
periode_e(z)


Voici ce que j'ai comme message :

Traceback (most recent call last):

  File "<ipython-input-1-f41d7becfa09>", line 15, in <module>
    periode_e(z)

  File "<ipython-input-1-f41d7becfa09>", line 9, in periode_e
    i= T[k+1]-T[k]

IndexError: list index out of range


J'ai beau chercher sur d'autre forums je ne trouve rien.
Pouvez vous ma'aider ?



1 réponse

Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
29 oct. 2018 à 14:11
Oui c'est normal... Ta boucle prend les valeurs de 0 à la longueur de la liste, mais dans ta boucle tu demande une valeur de la liste+1, donc tu te retrouve hors de la liste. Ce sera plus clair avec un bout de code...
Ta boucle devrais je pense être :
for k in range(len(T)-1) :
    ....le_reste_de_tes_calculs

;-)
Une autre petite erreur...
return v_moyenne(e)

v_moyenne n'existe pas. Si tu veux récupérer une valeur qui s'appelle v_moyenne, il faut lancer la fonction de cette manière :
v_moyenne = periode_e(z)

et finir ta fonction avec :
return e


Voilà, bonne journée
2
Haaaaaaaa génial ! Merci :-)
0