-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtp4_5_average.py
131 lines (99 loc) · 3.8 KB
/
tp4_5_average.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
def average(mat):
# Input:
# - colonne -> personne
# - ligne -> soirée
# - valeur: nombre de bières bues par la personne durant la soirée
nbSoiree = len(mat)
nbPersonne = len(mat[0])
# Calcul de la moyenne de chaque personne
#
moyenneParPersonne = [0] * nbPersonne
for s in range(nbSoiree):
soiree = mat[s] # "soiree" est donc une liste des bières bues par chaque personne (première valeur = personne 0)
for p in range(nbPersonne):
moyenneParPersonne[p] += soiree[p] / nbSoiree
# Calcul de la moyenne des bieres bues lors de chaque soiree
#
moyenneParSoiree = [0] * nbSoiree
for s in range(nbSoiree):
soiree = mat[s] # "soiree" est donc une liste des bières bues par chaque personne (première valeur = personne 0)
for p in range(nbPersonne):
moyenneParSoiree[s] += soiree[p] / nbPersonne
return [moyenneParPersonne, moyenneParSoiree]
# ----------------------
# Alternative
#
# Les deux boucles "extérieures" sont similaires -> on peut les regrouper
#
def average2(mat):
# Input:
# - ligne -> soirée
# - colonne -> personne
# - valeur: nombre de bières bues par la personne durant la soirée
nbSoiree = len(mat)
nbPersonne = len(mat[0])
moyenneParPersonne = [0] * nbPersonne
moyenneParSoiree = [0] * nbSoiree
for s in range(nbSoiree):
soiree = mat[s] # "soiree" est donc une liste des bières bues par chaque personne (première valeur = personne 0)
# Moyenne par personne
for p in range(nbPersonne):
moyenneParPersonne[p] += soiree[p] / nbSoiree
# Moyenne par soiree
for p in range(nbPersonne):
moyenneParSoiree[s] += soiree[p] / nbPersonne
return [moyenneParPersonne, moyenneParSoiree]
# ----------------------
# Alternative
#
# Les deux boucles "interieures" sont similaires -> on peut les regrouper
#
def average3(mat):
# Input:
# - colonne -> personne
# - ligne -> soirée
# - valeur: nombre de bières bues par la personne durant la soirée
nbSoiree = len(mat)
nbPersonne = len(mat[0])
moyenneParPersonne = [0] * nbPersonne
moyenneParSoiree = [0] * nbSoiree
for s in range(nbSoiree):
soiree = mat[s] # "soiree" est donc une liste des bières bues par chaque personne (première valeur = personne 0)
for p in range(nbPersonne):
# Moyenne par personne
moyenneParPersonne[p] += soiree[p] / nbSoiree
# Moyenne par soiree
moyenneParSoiree[s] += soiree[p] / nbPersonne
return [moyenneParPersonne, moyenneParSoiree]
# ----------------------
# Alternative
#
# Propagation des erreurs: le calcul des moyennes est pas "top" -> mieux vaut faire la somme totale et diviser par le
# nombre de valeur une fois la somme obtenue
#
def average4(mat):
# Input:
# - colonne -> personne
# - ligne -> soirée
# - valeur: nombre de bières bues par la personne durant la soirée
nbSoiree = len(mat)
nbPersonne = len(mat[0])
moyenneParPersonne = [0] * nbPersonne
moyenneParSoiree = [0] * nbSoiree
for s in range(nbSoiree):
soiree = mat[s] # "soiree" est donc une liste des bières bues par chaque personne (première valeur = personne 0)
for p in range(nbPersonne):
# Moyenne par personne
moyenneParPersonne[p] += soiree[p]
# Moyenne par soiree
moyenneParSoiree[s] += soiree[p]
# Conversion des totaux en moyennes
#
for p in range(nbPersonne):
moyenneParPersonne[p] = moyenneParPersonne[p] / nbSoiree
for s in range(nbSoiree):
moyenneParSoiree[s] = moyenneParSoiree[s] / nbPersonne
return [moyenneParPersonne, moyenneParSoiree]
# ----------------------
mat = [[2,4,6,8], [1,3,5,7]]
print(average4(mat))