Palmarès
Après un devoir, un professeur désire connaître les prénoms de l'élève ou des élèves ayant obtenus la meilleure note.
Les notes sont fournies dans un dictionnaire Python dans lequel les clés sont les prénoms des élèves et les valeurs leur note.
🐍 Script Pythonnotes = {
"Alice": 18,
"Bob": 10,
"Charles": 8,
"David": 12,
"Erwann": 18,
"Fanny": 14,
"Guillaume": 18,
"Hugo": 14
}
On désire créer une fonction palmares qui prend en paramètre un tel dictionnaire notes et renvoie un tuple de deux éléments :
Dans l'exemple précédent on obtient (18, ['Alice', 'Erwann', 'Guillaume']).
On garantit que le dictionnaire n'est pas vide, que tous les prénoms sont différents et que toutes les notes sont des entiers positifs ou nuls.
Pas de problème d'ordre
Il est inutile de se soucier de l'ordre des prénoms dans la liste des résultats.
Seule leur présence au sein de la liste importe.
Fonction max interdite
On interdit ici d'utiliser max qui diminuerait grandement l'intérêt de l'exercice.
Un ou deux tours ?
Il est possible de résoudre cet exercice à l'aide de deux parcours... mais aussi de le faire en une seule passe !
Exemples
>>> notes = {
... "Alice": 18,
... "Bob": 10,
... "Charles": 8,
... "David": 12,
... "Erwann": 17,
... "Fanny": 14,
... "Guillaume": 16,
... "Hugo": 14
... }
>>> palmares(notes)
(18, ['Alice'])
>>> notes = {
... "Bob": 10,
... "Charles": 8,
... "David": 12,
... "Hugo": 14,
... "Fanny": 14
... }
>>> palmares(notes)
(14, ['Hugo', 'Fanny'])
>>> # on accepte aussi (14, ['Fanny', 'Hugo'])
>>> notes = {
... "Romuald": 15,
... "Ronan": 14,
... "David": 15
... }
>>> palmares(notes)
(15, ['David', 'Romuald'])
>>> # on accepte aussi (15, ['Romuald', 'David'])
.128013s3_8èufvIy n7aS1me(P24:jtwi]D[h)6Oo;bcdg/0làqAp.rL-,=k95Rxé050N0s0z0o0B0R0b0l0M0R0o0b0b0#010z0B0V010406050b0g0r0r0o0X0k040p0J0R0g0 0J0m0l020o0r0V0K0l0)0s190X0T0g0s0b050P16181a1c140V041A1H051K0P1K1M1H140N0B0i0@0_0{0}0F0B0O0F0R1!0F0z12050/0L0R0s1V0`0|011Z1#1%1#0z1-1/1+0z0L0J0N1c1,0X1I0z0F0@1f0b0V0o0m0}0v011;1X010h0;0s0m1n0s1+2c2e2j1?2m1/2p0r2r040a0l0u0X0J0V0J0b0B1i1k0-2a0X0X0s0M2M1A2t0m1I0P282Y0z2625270N2v0}1%0m2o2J1+1S1U0^1=2,0B2.0m221T1+0V2R1I2W2Y33152d1k2@2k2|0X190R120l0q2V3713362u391?3b3d3f0v3i2e3k2W2+013p0o3e040l0c3t2X143w3n0}3z3B0l0w3F3v373x3L3f0(3P3H3R3J3y0J3c3A3f0H3W3l381W3o3#3q3C0n3*3I3-3K3/3%3C0e3?3Y3^3!3$3M0%3~3m403T040q0Q3P1J311A2=2#0N2)3x0M222B0,1T1I300s323j4c4l0-4t462^010$120-0h4c3@4A0A3f4G3 4A0m0h122d0R1u1y4L4z2k11040t4V3,4N122|0z4U1B4u4H4X120G0x3W0l4@0l3+3S4(0J4*0d190*3P4_4.1?0J120#524`3Z0r0B124b4,3u064^534M2k4C040h3#59543K4|4*5r5l554J042`5w4W3o5u4+355s0156040W4#4{040i3A1x1z5g2X5a404Y0t4;4?5j4^5W4A5n0B4F5U3C5(3a5F5C4$2k5K020O0z0K5=5O4)0s4 0o515-5/1?4Y4=5-5i5$6b655t045 6163335k5D0}5K585-6k5?5E6f4}0s5#4@6d3y120s1/0i5G3j6q3x6n5}3Z4Y0E0C6w6G3Z5n5p0X6J474Q2R2|0r6U4A0J5z5B6p6y0m5F5T5H5x0}676O5j6y5*5,6j6*6,5N6K120E6}6V044r6Y714A4Y6N6)5I6n6o6`5I6+6t4~50764/0468336a6b6?7f6A6C6E3u6y5K5M647s040o0V0V2o0N7k66124!7A6/6z736X0J6Z7M6l014Y0G6O6@122R0z0g0X0m6!7l7L6.7U7g6g7j7T6r6:120!7*6s6B0s6D6-4-7N7W3*0P4w4s4d860P4g1A0z4i8b2%2Z21232#0o1.884g1G4y7?012R0r0d0h0o0$600F0c121s1u1w1y0l7n4u1N3k1H0D000g1k2I2`0z0l2O0i1x0l6S2A0R0!0l0;0l0b000o0O2L8T1:2R0M0F0s0X8;8?0l0_0l5Q1/7%0l500B3d1:0N2e0?8O8T0B2T0B1j2p0B2R0l0:0m2K0l8E8`0o8`0B0b4*8.0?0^0+0?1=0J0M0B0+8F0S0@0.9s8}0s8 91937z1Q1L040Y8F5 0?0+0/0m8S0O1a2e0 8F2I2K0 7~0l0J0g0l0m0g0R1/0b8#1j0l7F1h8$0m2L0B3A9q8_8{5Q0Xa08l4_857h607;aa0l9E05aa5faa9N3k9;3k1%9Q9o0b1f1h9c8P2G9(9C0lau1%0b1:8{0r9V0F4ma94m5P5R1y5Z1Aae0.aA8P1a4l7%0?0-0?9IaX8T9.1S9b9d0:2R0W0l0p0BaT1:a#0X0l1y8S9ra62T1t2oa{0g0V0+a69J9g9E8{5 9062923A0s9^1k2A8S0M6B1/0Z9Aaf0l0y9-0Xa.9R8(2S1j2*2d8@bs0?7F3caS2O0b0+1/a*0m2.a^9?9`0X0+6Y9t0lbJ0f9+0o0k9#a_9.b96ubb0*bd1/a.1Aap14ap0Ub%0B9J8T8N0 aCa39oaG28aJahaL8}5SaP84aLbg9`9J8S0+9Z1/2A9X9`aVbs9f8`002oaD0ra8aZ1V9wa%99bL9e9g0tbPbW7~0Ga_1k4*9rb#bPa@9x0{9z9B8FcBb60?9T0l2R2c2S9*1y0Gb.0Pb:05ap0I1k0o7%0:8Sc.0{a;aBa2a^8OaE9q9s2o2a1obR8=9jav9`bs8`1:aD4l0mbzcka$68c)0Pan1R1T3x1^1$1(1*8p3x2x2o2q122D0p0Ma60V8S0u0kc17)644r8p344uaa7Z044E7I0}5z4_7=3S4P733A4T7 7w5I5YdQ7O9Td(7W8H5h7r7N7/6u6h7`6m57d@015c5e7Y5I6R5q7ad:6W2/7S7e7N6$126(e77.6|dU6~7m6=5%d ea6_6F6{abd!5Vd$6 d(7g747Rd+1279ec8q5^5`5|e2edabd?ef5X12d-3G7q5$eo7:62d`6IeG8qd;cIey0470eK4%7Pe5e!eA3j7p6P405n7#7%dGeB3xd%e%5:eI7;7-8q4Y7_eWe_ete{6sewe6enek5oe1e^3Zev7Qf93ue/6#6%e@fae3epd`6^d`eY7ver81f5e 5Of8e+eU577dfoeHeS6i807U787X69aQaL872Y8n9P0j0Ra_9r9h0gc?d6c?cs1:309z0+0-a^c c{bw9;f)1=1:689O2=dm1(1`1)2s7Ndt2z2Bdxdz10dCdEaIfn7wdI3+dK7wdMfbdPf6dR4Kgk3ydW4RdZe!7,fKeXeefzeg5!69d/fHd=e~fGeCd_f35b5d045f7ogBgv047|7~fD04fFfj6y6Le,d.ej7Ne06TgI72fBgnf1ft5;g)fleagb2Xfke|d*gn7yeuea4*0reqdreg5ZeN13ePdN5+g.abgT5_5{hafIe!h5e.h77Bhgg:5@gHfe725 ei6c7BgRfv5.7bhpgFf4e#g}e)75g,ezhtg^1?5n6Bh9hn6shshPd^gUgVg@eRgDeThHehgAePg#eHhwh17x127zgx727D7FdcgshEg+h/774:d~g$7!0.e?d`e`h`g_hYfJd#fx04f2hqe(h*e!fN7ofP4xfR4f4p14890.0:0=04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)