Adloun

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

Application directe du cours · niveau 2 · NSI (première), chapitre 4 — Les types construits · Tableaux, indices et matrices

É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 :

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.

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.