Adloun

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.