Moyenne pondérée

Les résultats aux évaluations d'un élève sont regroupés dans une liste non vide composée de couples (note, coefficient). Dans ce couple :

  • note est un nombre de type flottant (float) compris entre 0.0 et 20.0
  • coefficient est un nombre de type entier (int) strictement positif

Écrire une fonction moyenne qui renvoie la moyenne pondérée de cette liste donnée en paramètre.

Comparaison de nombres flottants

Lorsqu'on écrit a = x ou x est un nombre réel, la valeur de a enregistrée en machine est une valeur approchée de x (quelques fois la valeur exacte). Cette valeur approchée a la forme d'un nombre flottant (le type float en Python). En conséquence, alors que des calculs et des comparaisons peuvent être effectués de manière exacte sur des réels, ils ne le sont que de manière approchée sur leur représentation en machine. On peut donc obtenir par exemple, avec a = x et b = y, l'expression a == b évaluée à True alors que x et y sont différents.

C'est pourquoi les tests ne vérifient pas l'égalité des résultats et des valeurs attendues mais leur proximité.

Ainsi, on peut vérifier que \(\sqrt{2} \approx 1,414214\) en faisantassert abs(1.414214 - sqrt(2)) < 1e-6. Ce test vérifie que les deux valeurs sont proches à \(10^{-6}\) près.

Exemple

Le calcul suivant illustre l'exemple :

\[\frac{2×15,\!0 + 1×9,\!0 + 3×12,\!0}{2+1+3} = 12,\!5\]
🐍 Console Python
>>> moyenne([(15.0, 2), (9.0, 1), (12.0, 3)])
12.5
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.65038.9875.128013lS]et-d5f1umaèg,_/R=Vin 6)yàqPhcNL[(bsx.p;r4'0"ov+w73êOk:é *2I030d0a0b0j0s070I0%0C070j0I0I0q0R0b0s0L0R020u030I0h0i0i0j0N0x02080S070h0}0S0t0%000j0i0L0M0%0p0a170N0z0h0a0I030o1416181a120L02031F1y1I0o1F120d0s0T0=0@0_0{0B0s0l0B071W0B0b10030-0H070a1R0^0`0R1V1X1Z1X0b1(1*1%0b0N1G0b0B0=1d0I0L0j0t0{0(0R1,1T0R0f0/0a0t1l0a1%2224291.2c1*2f0i2h02060%0A0N0S0L0S0I0s1g1i0+200N0N0a0C2C1y2j0t1G0o1~2O1{1}1|1'0d2l0{1Z0t2e2z1%1O1Q0?1-2Y0s2!0t0S2'1%0L2H1G2M2O2^13231i2)2a2.0N1707100g2L2|112{2k2~1.3032100(3624382M2X0R3d0j33020X3h2N123k3b0{3n3p0O3s3j2|3l3y100e3B3u3D3w3m0S313o100v3I392}1S3c3N3e020W3B1J2?1y2'2R0d1}2W3L0C2/2r0*1P1G2=0a2@373#3.0+3_3a3V0{0!100+0f3B0%3T3E0f100i0S0x2e2!3#3v400R0 020G4h3K4j0t102.0b1w0n2y0t0+2H1w4o3 2*4k100w0#3I0%4K474i4E4r020C150h074w0S2,0b1x1z374M4p4E0S100q46483L0i4a020Q0K0Q4J4L4,4q104R0i4T0n3.0a0f0f4Z2^4$4D2a4(024*4!3i563U4E0i0s104?5c3t4L5e3l42020f3N4+4N2a4l4n5l3~5f2 4s0S4u4C5B1.4l0m5u4%5C4Q0S51455z4_4E4l0w5L571.0S0V102,5X5H3x5D4u0I4V4y0a4A543`5v5I104I5z0u5n5n5T5N4|4~2y4X5;5d5~5Z100U5b55665)5O5Q5'3l590'6g3L4P4t0a4@5|5o6l4{4S4U5052642N6r4j59696k4`6e526p6A4E5q2H0b0h0N0t6E4O6t4}4U620t4Y6R58100o6Z3c6T4~6w533S0o3|3^3$6/0o3(1y0b3*6@2U2P0j1)6;3(1E5A3l2H0i0n0f0j0!0a0n0B0X101q1s1u1w0%5_2`1L380B0g0%0s0d0{2B5/0j2C0c0I240I0c2,1O0C2r0)0b0$0N7w0s1h0%7z0t0;7D0s7F030j3l0B0a0j4z2Z420%0B2H0f0{017u7K7x7P7B7S7F280}0b1*0{0A5/172-0b0%7$1005041y0j2O7o381F0r5/2A7N2H3.1B4y0$6o7m1N1P3l7!4c0t2B7M1i2,5s101E8p0d8r8t1h0c7^1_02230N3.6O0s0N0%0h1i6N0L1*1J8a020E7W3.7Q1{0h2J8u8V8n2(4j1:1Y1!1$723L2n2e2g102t080C0N0~800A0x1~1h3#3@5A2_3`6.8;4j5q5s0N6%0{5x5G3E5*8l2`5?9g105K5z6J5 5P6H5S9n4F025W9r6c0R5!5$6Q9B9x6m5E4v4x4z0a4B9w5M5@027k375{4^9x590K9!6,996:2O701H021w800$1u1P3o2e4u0%0y8)3;8+4E8-1=1#2i9R0{8?2p2r8`8|8~2u910B935S953T973i039%9x9c5t9Ha13m100a1*2q6X9f9D5#025%an5Y6d6n5,9M5/9O6y9a5U5^6I9C9J5F9r9s675aav4Par1r9=9i3L4l0FaZ4j5h5ja%aK0209aM9I4{9u5R6b9Y4)aUaqasaY9QaB9ya$a}5(0Ra(0235b13l4la-5`5}a@029!0K9$3/2Oae6=3=710Z1i2=0$0f0k2H7K817W3@5hbt1+0T8d8ubg8m3'bm037o7q7s0R7-7L8E0jbC0C7C4y7T7G7I7.8u0%bR2I7qbV7U8Z8,7Z7#2,7%7(517+bO7xb$bT7=2h0%8G0a7{7}249=81b.83850o871y89717|0h0%0d0P4X7J0Y0b9_2'7X1!9~8:9Ca38^2s0%8{8}0L8 aaac2`ae7l2`ajao5q44aU4/4c4e0t4gb7a!105y9maoaO9L1h9N9PcUa~5V9U3i9W4KaN6(6V4W6XaIaR0{596a4#9C4.5j4=a.cVc,4 a;c:9Cc?avb45k2^c)c;0Ral9eaAb24P0sav9Eay9Ga?cV0H107K0t0l9l5=ao9hcQ4qdo022oa*5wcSdC6'02aD5-cZaI9C5V4H6Ibcc~dH9KdF9o029qdma~4P6*dia^de9jdS5+dJaGc!duc$10b0c#df5$dU9ybad86qc*a/4Q6u4V63d$026Dd'6s6Ga=c^bd6je66F6ndP9XdR606va;e3e5dYd?e8c}a~6L0,6Odleaeie06W6Yed4'6#a_d 6Ud06f5`1y9%1L3%bl0T38cm3L8q1h8D8v0t8x8a8A8C7xb}1%1r028Q230C0!1ye)ce0P8Qb|0h8T8l1M9*8Y208#0N8%2KbGeS8,co8/a0a~cs2q8_cva7cya992ewahcD3`5ScGdZ9kd^5JeFd#eC6!aTfudGdIaF5:fqd:d^dgfCa,bh3}9'bHeQ719,0%9.0h9:2o9?9^f38o3L9}f7aJ2afaa5fdcxczfh943%cE98bic+d)dt5ddad4fxaC9KaEcYd,dL9xa#fEd@dxa+09d;d.b2d6fGd`9Vf;fteo6hd%ghe7fzf~fBg5dD02g8ahd~dhgp9Sg7d^b4b6d=b810gdc(eLf:eN6 bI1Fbo0%bqbsbu7W0@gO740sbA0%bC0N8e0tbFe{eP7n7p7r0{gZg#0c5s0t8'1h2!078H8cg!b!g:g=cOar8Ub*9|b,5/827'7)7+g-8ug/1hg~g@1_b|2B7`0R7|3O7 c30t5q8486880g8W0D8f2I0S8i0d8k0%1o0+0h0JgO188Lg!ce1+gT1Z0IaPe{f49|f61?f8b2f%fccwa890f+adf-flcFf:ak4351cK4b4d4ff?2NdMdEgwf{d*fAaHfGdObbehfoeG61c.eBgk6BgjexdZdz1AfGcTg9d(eff`9D10eci96SeqildcavdwgCgldTh{9ydXicepggiicR9zdiaxazip5Ngm5.goiw4j5VeriDe06*d2bdc@659Iie15igg3iriL1.itiliviFeeiyiQa+iBi!eieliziSildjiKiCijf|d+iPi/a+9Ad{i3b2et6N6Pfsezi7iXao596$ild!iVi`d8gHfJgJ9(bI6=0,0.0:02.