0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Python

Le document présente un exercice de programmation en Python pour créer un système de gestion des notes d'étudiants. Il utilise des fonctions lambda pour calculer les moyennes, filtrer et trier les étudiants, et inclut un système de discussion interactif. Les solutions aux questions posées sont également fournies, démontrant l'utilisation de lambda, filter() et sorted().

Transféré par

JOËLYK
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues5 pages

Python

Le document présente un exercice de programmation en Python pour créer un système de gestion des notes d'étudiants. Il utilise des fonctions lambda pour calculer les moyennes, filtrer et trier les étudiants, et inclut un système de discussion interactif. Les solutions aux questions posées sont également fournies, démontrant l'utilisation de lambda, filter() et sorted().

Transféré par

JOËLYK
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Python

Par Mr Yankam Joël Stéphane


EXERCICE : SYSTÈME DE GESTION DE NOTES
Énoncé
Crée un programme qui gère les notes d'étudiants en utilisant des fonctions lambda pour les
calculs statistiques.
Consignes :
1. Crée une liste de dictionnaires contenant nom et notes de chaque étudiant

2. Utilise des fonctions lambda pour :


· Calculer la moyenne de chaque étudiant
· Filtrer les étudiants ayant la moyenne
· Trier les étudiants par moyenne
3. Permets à l'utilisateur de discuter avec le programme
Code à compléter

1 # Liste initiale des étudiants avec leurs notes


2 etudiants = [
3 {"nom": "Alice", "notes": [15, 12, 18, 14]},
4 {"nom": "Bob", "notes": [8, 10, 12, 9]},
5 {"nom": "Charlie", "notes": [19, 17, 16, 18]},
6 {"nom": "Diana", "notes": [10, 11, 9, 12]}
7 ]

9 # TODO: Compléter les fonctions lambda


10 # 1. Lambda pour calculer la moyenne d'une liste de notes
11 calcul_moyenne = lambda notes: # Votre code ici

13 # 2. Ajouter la moyenne à chaque étudiant


14 for etudiant in etudiants:
15 etudiant["moyenne"] = # Votre code ici

17 # 3. Lambda pour vérifier si un étudiant a la moyenne (>=10)


18 a_la_moyenne = lambda etudiant: # Votre code ici

20 # 4. Filtrer les étudiants qui ont la moyenne


21 reussite = list(filter(# Votre code ici))

23 # 5. Trier les étudiants par moyenne (ordre décroissant)


24 classement = sorted(# Votre code ici,
25 key=# Votre code ici,
26 reverse=True)
28 # 6. Système de discussion interactif
29 def discuter():
30 print("=== SYSTÈME DE GESTION DES NOTES ===")
31 print("Commandes disponibles :")
32 print("- 'moyennes' : afficher toutes les moyennes")
33 print("- 'reussite' : afficher les étudiants qui ont la moyenne")
34 print("- 'classement' : afficher le classement")
35 print("- 'aide' : pour un étudiant spécifique")
36 print("- 'quit' : quitter le programme")
37
38 while True:
39 commande = input("\nQue voulez-vous faire ? ").lower()
40
41 if commande == "quit":
42 print("Au revoir !")
43 break
44
45 elif commande == "moyennes":
46 # TODO: Afficher toutes les moyennes
47 pass
48
49 elif commande == "reussite":
50 # TODO: Afficher les étudiants qui ont la moyenne
51 pass
52
53 elif commande == "classement":
54 # TODO: Afficher le classement
55 pass
56
57 elif commande == "aide":
58 # TODO: Demander un nom et afficher ses infos
59 pass
60
61 else:
62 print("Commande non reconnue")

64 # Lancer la discussion
65 discuter()

Questions
Question 1 : Complète la fonction lambda calcul_moyenne pour qu'elle calcule la moyenne
des notes.
Question 2 : Comment ajouter la moyenne à chaque étudiant en utilisant calcul_moyenne ?

Question 3 : Écris la lambda a_la_moyenne qui vérifie si un étudiant a une moyenne >= 10.
Question 4 : Utilise filter() avec la lambda pour obtenir la liste des étudiants qui réussissent.

Question 5 : Utilise sorted() avec une lambda pour trier les étudiants par moyenne
décroissante.
Question 6 : Implémente les différentes commandes du système de discussion.
Solution

1 # Solution complète

3 etudiants = [
4 {"nom": "Alice", "notes": [15, 12, 18, 14]},
5 {"nom": "Bob", "notes": [8, 10, 12, 9]},
6 {"nom": "Charlie", "notes": [19, 17, 16, 18]},
7 {"nom": "Diana", "notes": [10, 11, 9, 12]}
8 ]

10 # Question 1: Lambda pour calculer la moyenne


11 calcul_moyenne = lambda notes: sum(notes) / len(notes) if notes else 0

13 # Question 2: Ajouter la moyenne à chaque étudiant


14 for etudiant in etudiants:
15 etudiant["moyenne"] = calcul_moyenne(etudiant["notes"])

17 # Question 3: Lambda pour vérifier si un étudiant a la moyenne


18 a_la_moyenne = lambda etudiant: etudiant["moyenne"] >= 10

20 # Question 4: Filtrer les étudiants qui ont la moyenne


21 reussite = list(filter(a_la_moyenne, etudiants))

23 # Question 5: Trier les étudiants par moyenne


24 classement = sorted(etudiants,
25 key=lambda e: e["moyenne"],
26 reverse=True)

28 # Question 6: Système de discussion


29 def discuter():
30 print("=== SYSTÈME DE GESTION DES NOTES ===")
31 print("Commandes disponibles :")
32 print("- 'moyennes' : afficher toutes les moyennes")
33 print("- 'reussite' : afficher les étudiants qui ont la moyenne")
34 print("- 'classement' : afficher le classement")
35 print("- 'aide [nom]' : pour un étudiant spécifique")
36 print("- 'quit' : quitter le programme")
37
38 while True:
39 commande = input("\nQue voulez-vous faire ? ").lower().strip()
40
41 if commande == "quit":
42 print("Au revoir !")
43 break
44
45 elif commande == "moyennes":
46 print("\n=== MOYENNES DES ÉTUDIANTS ===")
47 for e in etudiants:
48 print(f"{e['nom']}: {e['moyenne']:.2f}/20")
49
50 elif commande == "reussite":
51 print("\n=== ÉTUDIANTS AYANT LA MOYENNE ===")
52 for e in reussite:
53 print(f"{e['nom']}: {e['moyenne']:.2f}/20")
54
55 elif commande == "classement":
56 print("\n=== CLASSEMENT DES ÉTUDIANTS ===")
57 for i, e in enumerate(classement, 1):
58 print(f"{i}. {e['nom']}: {e['moyenne']:.2f}/20")
59
60 elif [Link]("aide"):
61 # Extraire le nom après "aide"
62 parties = [Link]()
63 if len(parties) > 1:
64 nom = parties[1].capitalize()
65 etudiant_trouve = next((e for e in etudiants if
e["nom"].lower() == [Link]()), None)
66
67 if etudiant_trouve:
68 print(f"\n=== INFORMATIONS POUR {nom} ===")
69 print(f"Notes: {etudiant_trouve['notes']}")
70 print(f"Moyenne: {etudiant_trouve['moyenne']:.2f}/20")
71 print(f"Statut: {'Réussite' if
etudiant_trouve['moyenne'] >= 10 else 'Échec'}")
72 else:
73 print(f"Étudiant '{nom}' non trouvé")
74 else:
75 print("Utilisation: aide [nom]")
76
77 else:
78 print("Commande non reconnue")

80 # Lancer la discussion
81 if __name__ == "__main__":
82 discuter()

Exemple d'exécution

1 === SYSTÈME DE GESTION DES NOTES ===


2 Commandes disponibles :
3 - 'moyennes' : afficher toutes les moyennes
4 - 'reussite' : afficher les étudiants qui ont la moyenne
5 - 'classement' : afficher le classement
6 - 'aide [nom]' : pour un étudiant spécifique
7 - 'quit' : quitter le programme

9 Que voulez-vous faire ? moyennes

11 === MOYENNES DES ÉTUDIANTS ===


12 Alice: 14.75/20
13 Bob: 9.75/20
14 Charlie: 17.50/20
15 Diana: 10.50/20
17 Que voulez-vous faire ? reussite

19 === ÉTUDIANTS AYANT LA MOYENNE ===


20 Alice: 14.75/20
21 Charlie: 17.50/20
22 Diana: 10.50/20

24 Que voulez-vous faire ? classement

26 === CLASSEMENT DES ÉTUDIANTS ===


27 1. Charlie: 17.50/20
28 2. Alice: 14.75/20
29 3. Diana: 10.50/20
30 4. Bob: 9.75/20

32 Que voulez-vous faire ? aide bob

34 === INFORMATIONS POUR Bob ===


35 Notes: [8, 10, 12, 9]
36 Moyenne: 9.75/20
37 Statut: Échec

39 Que voulez-vous faire ? quit


40 Au revoir !

Concepts clés abordés :


· Fonctions lambda : fonctions anonymes pour des opérations simples

· filter() : filtrer une liste selon un critère

· sorted() : trier avec une clé personnalisée

· Interaction utilisateur : boucle de discussion

· Manipulation de dictionnaires : stockage de données structurées

Vous aimerez peut-être aussi