Corrigé TD2b listes, tuples, dictionnaires
Ex 0: Parcours d’une liste — corrigé
-
script 1 affiche
1 10 100 1000- variant :
x - itérable :
L(la liste elle-même) - valeurs successives prises par le variant :
1,10,100,1000(les éléments deL)
- variant :
-
script 2 affiche
0 1 2 3- variant :
i - itérable :
range(len(L)), soitrange(4) - valeurs successives prises par le variant :
0,1,2,3(les indices deL)
- variant :
Ex 1: table de 3 — corrigé
-
Question a1: Après exécution,
Lvaut[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]. L’itérableiprend successivement les valeurs0, 1, 2, ..., 10. -
Question a2: On complète les
...par3*i(le terme général de la table de 3). Pour la table de 7, il suffirait de remplacer3*ipar7*i. -
Compréhension de liste :
Ex 2: Energie en sciences physiques — corrigé
- Compréhension de liste :
- Question c: script complet pour le tracé du graphique :
- déclarer des variables et des listes → lignes avec
t = ...,vitesse = ...,m = ...,E = [] - calculer les termes d’une liste avec une boucle bornée → le bloc
for v in vitesse: E.append(...) - importer un module →
import matplotlib.pyplot as plt - tracer un graphique → les lignes
plt.plot(...),plt.xlabel(...),plt.ylabel(...),plt.show()
Ex 3: algorithmes simples utilisant une boucle bornée — corrigé
- Question d: somme des $2^i$ pour
ide 0 à 99 :
- Question e: nombre de boules d’une pyramide à $n$ étages = somme des carrés parfaits (1 boule à l’étage du sommet, 4 à l’étage suivant, 9, 16, …) ou éventuellement la somme des entiers selon la forme retenue dans le cours ; en reprenant la construction “somme des entiers de 1 à n” adaptée à la pyramide à couches carrées :
Pour n = 7, on trouve somme = 140 boules. Il suffit de remplacer n = 7 par n = 99 pour obtenir le nombre de boules d’une pyramide à 99 étages (328350).
(Remarque : si la pyramide de l’énoncé est en réalité un empilement simple - une boule en haut, deux à l’étage suivant, etc. - on adaptera avec somme = somme + i au lieu de i**2; le principe de la boucle reste identique.)
Ex 4: Autres types construits — corrigé
Tuple
Affiche bien :
Dictionnaire
- Construction par boucle
for:
- Construction par compréhension de dictionnaire :
Dans les deux cas, D vaut {"A":1, "B":2, "C":3}.
Ex 5: Méthodes de listes — gérer un plan de vols — corrigé
Points clés :
- b)
insert(index, valeur)insère sans reconstruire toute la liste. - e)
pop()(sans argument) retire et retourne le dernier élément : c’est la seule méthode qui fait les deux actions à la fois. - f)
extend()fusionne une liste à la fin d’une autre en une seule instruction, sans boucle.
Ex 6: Trier une liste — classement de notes — corrigé
-
Question c: en exécutant
notes = notes.sort(),notesdevientNone. En effet, la méthodesort()trie la liste en place et ne retourne rien (elle retourneNone) ; en réaffectant son résultat ànotes, on écrase la liste parNone. -
Question d: le paramètre est
reverse=True.
Ex 7: Copier une liste — le piège de la référence — corrigé
-
Question a: les deux
printaffichent[1, 2, 3, 4]. -
Question b: ce résultat s’explique car l’instruction
copie = originalne crée pas une nouvelle liste : elle fait pointercopievers le même objet en mémoire queoriginal. Modifiercopiemodifie donc directement cet objet unique, ce qui se répercute suroriginal. -
Question c: pour obtenir une copie indépendante, on peut par exemple écrire :
ou bien :
Avec l’une ou l’autre de ces méthodes, modifier copie (par exemple copie.append(4)) laisse original inchangée, soit [1, 2, 3].
Ex 8: Méthodes de dictionnaires — le carnet de capitales — corrigé
Points clés :
- g)
capitales.copy()(oudict(capitales)) crée un nouveau dictionnaire indépendant ; une simple affectationmes_capitales = capitalesaurait reproduit le piège de référence de l’exercice 7. - h) la compréhension parcourt les couples
(pays, ville)via.items()et applique.upper()sur chaque valeur.