Adloun

NSI (première) · Chapitre 4 · Application directe du cours

Prédire l'effet de chacun de ces deux fragments, puis vérifier

Les types construits · Tableaux, indices et matrices · niveau 2

Énoncé

Prédire l'effet de chacun de ces deux fragments, puis vérifier :


t = [1, 2, 3]
for x in t:
    x = x + 1

t2 = [1, 2, 3]
for i in range(len(t2)):
    t2[i] = t2[i] + 1

Expliquer la différence, et en tirer la règle sur le choix du parcours.

Corrigé


print(t)        # [1, 2, 3]   <- INCHANGE
print(t2)       # [2, 3, 4]   <- modifie

L'explication. for x in t donne à x une copie de la valeur de la case, pas la case elle-même. Écrire x = x + 1 fait pointer x vers un nouvel entier ; le tableau, lui, ne sait rien de cette variable. Au tour suivant, x est réaffecté à l'élément suivant et la valeur calculée est perdue.

t2[i] = t2[i] + 1 désigne au contraire la case d'indice : c'est une affectation dans le tableau.

La règle. Parcourir par élément chaque fois que c'est possible — c'est plus court et l'on ne peut pas se tromper d'indice. Passer par indice dans deux situations seulement :

  • on a besoin de la position (la renvoyer, comparer deux tableaux rang par rang) ;
  • on veut modifier le tableau en place.

Le piège tient à ce qu'aucune erreur n'est signalée. Le premier fragment s'exécute parfaitement, sans message, et ne fait rien. C'est le type de défaut qu'un jeu de tests attrape immédiatement — encore faut-il en avoir un. À noter : avec un tableau de tableaux, la conclusion s'inverse en partie ; on y revient dans la banque supplémentaire.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →