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
beta + bavec les anciennes valeurs, soit et ; - construire le couple ;
- le déballer dans
aetb.
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
- 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.