site de Fabien Torre


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)
site de Fabien Torre, université de Lille