Files
1ereNSI/representation_construits/chapitre_3/exercices/README.md

232 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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]
```
---
Source : Florian Mathieu - Licence CC BY NC SA