2026-01-13 14:01:13 +01:00
## Exercices - Structures imbriquées et compréhensions
---
### Exercice 1 : Manipulation de structures imbriquées
On considère la structure suivante représentant des élèves et leurs notes :
```python
eleves = [
{ "nom" : "Dupont" , "prenom" : "Alice" , "notes" : [ 12 , 15 , 14 , 18 ]},
{ "nom" : "Martin" , "prenom" : "Bob" , "notes" : [ 8 , 11 , 9 , 13 ]},
{ "nom" : "Durand" , "prenom" : "Claire" , "notes" : [ 16 , 17 , 19 , 15 ]},
{ "nom" : "Petit" , "prenom" : "David" , "notes" : [ 10 , 12 , 11 , 14 ]}
]
```
#### Question 1
Sans exécuter le code, déterminer ce que renvoient les instructions suivantes :
```python
eleves [ 0 ][ "prenom" ]
eleves [ 2 ][ "notes" ][ 0 ]
len ( eleves [ 1 ][ "notes" ])
eleves [ 3 ][ "nom" ]
```
#### Question 2
Écrire une fonction `moyenne_eleve(eleve)` qui prend un dictionnaire représentant un élève et renvoie sa moyenne.
```python
>>> moyenne_eleve ( eleves [ 0 ])
14.75
```
#### Question 3
Écrire une fonction `meilleur_eleve(eleves)` qui prend la liste des élèves et renvoie le nom complet (prénom + nom) de l'élève ayant la meilleure moyenne.
```python
>>> meilleur_eleve ( eleves )
'Claire Durand'
```
#### Question 4
Écrire une fonction `eleves_au_dessus(eleves, seuil)` qui renvoie la liste des prénoms des élèves ayant une moyenne supérieure ou égale au seuil.
```python
>>> eleves_au_dessus ( eleves , 14 )
[ 'Alice' , 'Claire' ]
```
---
### Exercice 2 : Compréhensions de listes
#### Question 1
Écrire en compréhension une liste contenant les carrés des entiers de 1 à 20.
#### Question 2
Écrire en compréhension une liste contenant uniquement les nombres pairs de 1 à 50.
#### Question 3
Soit la liste suivante :
```python
mots = [ "python" , "java" , "javascript" , "c" , "ruby" , "go" ]
```
Écrire en compréhension une liste contenant uniquement les mots de plus de 4 caractères.
#### Question 4
Écrire en compréhension une liste contenant les mots de la liste précédente, mais en majuscules.
#### Question 5
Soit la liste suivante :
```python
nombres = [ 3 , - 1 , 4 , - 1 , 5 , - 9 , 2 , 6 , - 5 , 3 ]
```
Écrire en compréhension une liste contenant uniquement les nombres positifs, multipliés par 2.
---
### Exercice 3 : Compréhensions de dictionnaires
#### Question 1
Écrire en compréhension un dictionnaire associant chaque entier de 1 à 10 à son carré.
```python
>>> # Résultat attendu
{ 1 : 1 , 2 : 4 , 3 : 9 , 4 : 16 , 5 : 25 , 6 : 36 , 7 : 49 , 8 : 64 , 9 : 81 , 10 : 100 }
```
#### Question 2
Soit la liste suivante :
```python
prenoms = [ "Alice" , "Bob" , "Claire" , "David" ]
```
Écrire en compréhension un dictionnaire associant chaque prénom à sa longueur.
```python
>>> # Résultat attendu
{ 'Alice' : 5 , 'Bob' : 3 , 'Claire' : 6 , 'David' : 5 }
```
#### Question 3
Soit le dictionnaire suivant représentant des températures en Celsius :
```python
temperatures_c = { "Paris" : 20 , "Lyon" : 22 , "Marseille" : 25 , "Lille" : 18 }
```
Écrire en compréhension un dictionnaire convertissant ces températures en Fahrenheit.
Rappel : F = C × 9/5 + 32
#### Question 4
Soit le dictionnaire suivant :
```python
notes = { "Alice" : 15 , "Bob" : 8 , "Claire" : 12 , "David" : 17 , "Eve" : 9 }
```
Écrire en compréhension un dictionnaire ne contenant que les élèves ayant une note supérieure ou égale à 10.
---
### Exercice 4 : Structures complexes
On représente un tournoi de jeux vidéo avec la structure suivante :
```python
tournoi = {
"nom" : "Championship 2024" ,
"jeu" : "League of Legends" ,
"equipes" : [
{
"nom" : "Team Alpha" ,
"joueurs" : [ "Faker" , "Zeus" , "Oner" ],
"victoires" : 5
},
{
"nom" : "Team Beta" ,
"joueurs" : [ "Caps" , "Jankos" , "Mikyx" ],
"victoires" : 3
},
{
"nom" : "Team Gamma" ,
"joueurs" : [ "Chovy" , "Deft" , "Keria" ],
"victoires" : 4
}
]
}
```
#### Question 1
Écrire les instructions permettant d'accéder à :
- Le nom du tournoi
- Le nombre d'équipes participantes
- Le nom du deuxième joueur de la première équipe
- Le nombre de victoires de "Team Gamma"
#### Question 2
Écrire une fonction `equipe_gagnante(tournoi)` qui renvoie le nom de l'équipe ayant le plus de victoires.
#### Question 3
Écrire une fonction `tous_les_joueurs(tournoi)` qui renvoie la liste de tous les joueurs du tournoi (en utilisant une compréhension).
#### Question 4
Écrire une fonction `ajouter_victoire(tournoi, nom_equipe)` qui ajoute une victoire à l'équipe spécifiée.
---
### Exercice 5 : Double compréhension (Pour aller plus loin)
#### Question 1
Écrire en compréhension une liste contenant toutes les coordonnées (x, y) d'une grille 3× 3, sous forme de tuples.
```python
>>> # Résultat attendu
[( 0 , 0 ), ( 0 , 1 ), ( 0 , 2 ), ( 1 , 0 ), ( 1 , 1 ), ( 1 , 2 ), ( 2 , 0 ), ( 2 , 1 ), ( 2 , 2 )]
```
#### Question 2
Écrire en compréhension une matrice identité 4× 4 (1 sur la diagonale, 0 ailleurs).
```python
>>> # Résultat attendu
[[ 1 , 0 , 0 , 0 ], [ 0 , 1 , 0 , 0 ], [ 0 , 0 , 1 , 0 ], [ 0 , 0 , 0 , 1 ]]
```
#### Question 3
Soit la matrice suivante :
```python
matrice = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]]
```
Écrire en compréhension une liste contenant tous les éléments de la matrice "aplatis" en une seule liste.
```python
>>> # Résultat attendu
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
```
---
2026-08-11 23:29:03 +02:00
Source : Florian Mathieu - Licence CC BY-SA