Soit notes = 12, 15, 8, 17, 11
Application directe du cours · niveau 1 (application) · NSI (première), chapitre 4 — Les types construits · Tableaux, indices et matrices
Énoncé
Soit notes = [12, 15, 8, 17, 11]. Donner la valeur de notes[0], notes[4], len(notes), et dire ce que produit notes[5]. Écrire ensuite l'accès au dernier élément d'un tableau t de longueur quelconque.
Corrigé
notes = [12, 15, 8, 17, 11]
notes[0] # 12 : le premier element
notes[4] # 11 : le dernier, car il y a 5 elements
len(notes) # 5
notes[5] # IndexError: list index out of range
La règle. Un tableau de éléments a des indices de à . Il n'y a pas d'élément d'indice : notes[5] lève IndexError. C'est une bonne nouvelle — l'erreur est signalée, tout de suite, avec un message clair. En C, la même faute lirait silencieusement la mémoire voisine.
Le dernier élément, deux écritures.
t[len(t) - 1] # l'ecriture generale, valable dans tous les langages
t[-1] # le raccourci de Python
Les deux rendent ici. La première dit pourquoi : le dernier indice est . La seconde est plus courte mais propre à Python, et elle a un défaut pédagogique — elle masque la convention qu'on cherche justement à installer. Les deux exigent que le tableau soit non vide : sur un tableau vide, t[len(t) - 1] devient t[-1], qui lève IndexError lui aussi.
Où cette erreur se produit vraiment : dans for i in range(len(t) + 1), qui déborde d'une case, ou dans t[i + 1] au dernier tour d'une boucle. C'est l'erreur « de », la plus fréquente de toute la programmation.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.