NSI (première) · Chapitre 4 · Application directe du cours
Soit notes = 12, 15, 8, 17, 11
Les types construits · Tableaux, indices et matrices · niveau 1 (application)
É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.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.