Source de promotion.py
1: ### implémentation du type abstrait Étudiant
2: ### avec des listes Python
3:
4: def créer_étudiant(n,p,a):
5: return { 'prenom':p , 'nom':n , 'année':a ,
6: 'math':-1 , 'info':-1 ,
7: 'moyenne':-1 }
8:
9: def nom_étudiant(e):
10: return e['nom']
11:
12: def prénom_étudiant(e):
13: return e['prenom']
14:
15: def naissance_étudiant(e):
16: return e['année']
17:
18: def notemath_étudiant(e):
19: return e['math']
20:
21: def noteinfo_étudiant(e):
22: return e['info']
23:
24: def notediscipline_étudiant(d,e):
25: return e[d]
26:
27: def moyenne_étudiant(e):
28: return e['moyenne']
29:
30: def modifier_notemath(e,n):
31: e['math'] = n
32:
33: def modifier_noteinfo(e,n):
34: e['info'] = n
35:
36: def calculer_moyenne_étudiant (e):
37: e['moyenne'] = (e['math'] + e['info']) /2
38:
39: def afficher_etudiant(e):
40: print()
41: print("-----------------------------------")
42: print("| Prénom :",e['prenom'])
43: print("| Nom :",e['nom'])
44: print("| Naissance en :",e['année'])
45: print("| Note mathématiques : ",end="")
46: if e['info']>=0:
47: print(e['info'])
48: else:
49: print('-')
50: print("| Note informatique : ",end="")
51: if e['math']>=0:
52: print(e['math'])
53: else:
54: print('-')
55: print("| Moyenne : ",end="")
56: if e['moyenne']>=0:
57: print(e['moyenne'])
58: else:
59: print('-')
60: print("-----------------------------------")
61: print()
62:
63: ### Fonctions sur les promotions
64:
65: # calcule la moyenne en informatique d'une promotion
66: def moyenne_info_promo (p):
67: somme = 0
68: for e in p:
69: somme = somme + noteinfo_étudiant(e)
70: print("La moyenne de la promo en info est :",somme/len(p))
71:
72: def moyenne_info_promo_version_fori (p):
73: somme = 0
74: for i in range(0,len(p)):
75: somme = somme + noteinfo_étudiant(p[i])
76: print("La moyenne de la promo en info est :",somme/len(p))
77:
78: def moyenne_info_promo_version_while (p):
79: somme = 0
80: i = 0
81: while i<len(p):
82: somme = somme + noteinfo_étudiant(p[i])
83: i = i+1
84: print("La moyenne de la promo en info est :",somme/len(p))
85:
86:
87: # calcule la moyenne d'une promotion p pour une discipline d
88: def moyenne_promo (p,d):
89: somme = 0
90: for e in p:
91: somme = somme + notediscipline_étudiant(d,e)
92: print("La moyenne de la promo en",d,"est :",somme/len(p))
93:
94: # recherche dans une promotion de l'étudiant avec la meilleure moyenne
95: def meilleur_etudiant (p):
96: moyenne_max = -1
97: for e in p:
98: if moyenne_étudiant(e)>moyenne_max:
99: moyenne_max = moyenne_étudiant(e)
100: meilleur_etudiant = e
101: print()
102: print("*** Le meilleur étudiant est ***")
103: afficher_etudiant(meilleur_etudiant)
104:
105:
106: # ------------------------------------------------------------
107: # définitions d'étudiants et appels aux procédures précédentes
108: # ------------------------------------------------------------
109:
110: ### tests
111:
112: moi = créer_étudiant('Faine','Robert',2000)
113: modifier_noteinfo(moi,16)
114: modifier_notemath(moi,14)
115:
116: jsp = créer_étudiant('sans Peur','Jean',1371)
117: modifier_noteinfo(jsp,12)
118: modifier_notemath(jsp,11)
119:
120: jb = créer_étudiant('Bonsergent','Jacques',1912)
121: modifier_noteinfo(jb,14.0)
122: modifier_notemath(jb,8)
123:
124: at = créer_étudiant('Turing','Alan',1912)
125: modifier_noteinfo(at,20)
126: modifier_notemath(at,10.5)
127:
128: kg = créer_étudiant('Gödel','Kurt',1906)
129: modifier_noteinfo(kg,13)
130: modifier_notemath(kg,17.5)
131:
132: promo = [moi,jsp,jb,at,kg]
133:
134: for etu in promo:
135: calculer_moyenne_étudiant(etu)
136:
137: for etu in promo:
138: afficher_etudiant(etu)
139:
140: moyenne_info_promo(promo)
141: moyenne_info_promo_version_fori(promo)
142: moyenne_info_promo_version_while(promo)
143: moyenne_promo(promo,'math')
144:
145: meilleur_etudiant(promo)