Adloun

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

Que vaut a après a, b = 1, 2 puis a, b = b, a + b

Les types construits · P-uplets, déballage et compréhensions · niveau 1 (application)

Énoncé

Que vaut a après a, b = 1, 2 puis a, b = b, a + b ? Dérouler à la main, puis vérifier. Pourquoi l'ordre des deux affectations n'a-t-il pas d'importance ?

Corrigé

La trace. Après a, b = 1, 2, on a et . Puis a, b = b, a + b : le membre de droite est évalué d'abord, avec les valeurs actuelles, ce qui donne le couple . Ce couple est ensuite déballé :


a, b = 1, 2
a, b = b, a + b
print(a, b)          # 2 3

Pourquoi l'ordre des deux affectations n'a pas d'importance. Parce qu'il n'y a pas deux affectations. Il y en a une seule, dont le membre de droite est un p-uplet entièrement construit avant que la moindre variable ne change. Le mécanisme est en trois temps :

  • évaluer b et a + b avec les anciennes valeurs, soit et ;
  • construire le couple ;
  • le déballer dans a et b.

Le contraste, à faire tourner. En deux lignes séparées, l'ordre devient décisif :


x, y = 1, 2
x = y            # x vaut 2, l'ancienne valeur de x est PERDUE
y = x + y        # on calcule 2 + 2, pas 1 + 2
print(x, y)      # 2 4     <- et non 2 3

On obtient au lieu de . Il faudrait une variable temporaire pour retrouver le bon résultat : c'est précisément ce dont l'affectation multiple dispense.

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 →