## 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