Aller au contenu

Trouver les lettres manquantes dans un pangramme⚓︎

Un pangramme est une phrase contenant toutes les lettres de l'alphabet.

Il existe dans l'alphabet latin utilisé en français 26 lettre minuscules « classiques ». Si l'on tient compte des lettres accentuées et des ligatures (à, â, ..., ç, æ et œ), le décompte passe à 42 caractères distincts.

On se limite dans cet exercice aux lettres minuscules de l'alphabet : a, b, c, ..., z.

Un exemple classique de pangramme est « portez ce vieux whisky au juge blond qui fume ». Chaque lettre y apparaît au moins une fois.

Par contre « portez un vieux whisky au juge blond qui fume » n'est pas un pangramme : il manque la lettre c.

Vous devez écrire trois fonctions :

  • indice prend en argument une lettre minuscule entre "a" et "z" et renvoie son indice dans l'alphabet (en débutant à 0 pour "a") ;
  • minuscule prend en argument un indice entre 0 et 25 (inclus l'un et l'autre) et renvoie la lettre de l'alphabet correspondante (minuscule(1) renvoie "b") ;
  • lettres_manquantes qui :
    • prend en argument une chaîne de caractères phrase,
    • renvoie la liste des lettres manquantes dans cette chaîne pour qu'elle soit un pangramme.

On prendra soin de renvoyer les lettres manquantes dans l'ordre alphabétique.

Exemples
>>> indice("a")
0
>>> indice("z")
25
>>> minuscule(1)
'b'
>>> minuscule(24)
'y'
🐍 Console Python
>>> lettres_manquantes("portez ce vieux whisky au juge blond qui fume !")
[]
>>> lettres_manquantes("portez un vieux whisky au juge blond qui fume !")
['c']
>>> lettres_manquantes("portez ce vieux whisky au juge blond !")
['f', 'm', 'q']
Indice

On pourra utiliser une liste presences contenant initialement 26 fois la valeur False. Cette liste sera mise à jour lors d'un parcours de la chaîne de caractères : lorsque l'on rencontre une lettre, on met True dans la cellule correspondante.

Une fois la phrase lue en entier, les lettres manquantes peuvent être déterminées en parcourant la liste de booléens.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10
.128013s3_8èufvIy 7naêS1me(P4C2:jtwi]D[h*)6Oo;bcdg/T0làqAp!.rFL-,}=+zk{95Rxé050Q0t0B0o0D0V0b0l0P0V0o0b0b0,010B0D0Z010406050b0g0s0s0o0$0k040q0M0V0g190M0n0l020o0s0Z0N0l0?0t1j0$0X0g0t0b050S1g1i1k1m1e0Z041K1R051U0S1U1W1R1e0Q0D0i111315170H0D0R0H0V1.0H0B1c050|0O0V0t1)1416011-1/1;1/0B1`1|1^0B0O0M0Q1m1_0$1S0B0H111p0b0Z0o0n170y011~1+010h0~0t0n1x0t1^2m2o2t202w1|2z0s2B040a0l0v0$0M0Z0M0b0D1s1u0`2k0$0$0t0P2W1K2D0n1S0S2i2,0B2g2f2h0Q2F171;0n2y2T1^1$1(121 2_0D2{0n2c1%1^0Z2#1S2*2,3d1f2n1u312u360$1j0V1c0l0r2)3h1d3g2E3j203l3n3p0y3s2o3u2*2^013z0o3o040l0c3D2+1e3G3x173J3L0l0w3P3F3h3H3V3p0=3Z3R3#3T3I0M3m3K3p0K3*3v3i1*3y3/3A3M0m3@3S3`3U3|3;3M0e403,423.3:3W0;483w4a3%040r0U4f3_324b3}0r3r1L3t3+4g4o4i0r3C4t3E4v4n3k443L0r3O4B3Q3^3$4G1c0r3Y4K3!4w4F4c4P3)4S4D4N4W4j3?4Z4M3-4y3 4)414x4O4j474.494:4$0r4e4@4U3{4$0y4l4}4E4 3}0y4s3d4!4+4;0y4A594*4h5c4J5f4/4V564R5k4^5m450y4Y5p4~43504(5v545x564-5A4#564?5F5b504|5J5h4$0c523f1X3b1K2 2/0Q2?3H0P2c2L0_1%1S3a0t3c3t3Z055#0`5-5w010/1c0`0h5/5l200C3p5}5q3y0h1c341$0P0t625@1b040u6b5B3I1c0s340g0b0P0g1|6g3H6d0J0z3*0l6x0l5g4o5_042#0B0g0$0n3Z6z5~3U0O1c3/0Q6r3-6d6f4S6A3k6j6l6n6p6a6V6L016t6J6W200M1c0)6+6(0n6N046P6R4a6T6`4o0b2r04010o016}2u6*4Z065a4a6C5{755 616%633U65046k0n6m6o6q7h6c1c6U3f6=667e176t6v4Z6y6K7i5^1c6E6G6I4S7E5@6?1c0P0H0$7y6)7t7T7O6^0$6Q7r6h6|7#3H6 1c72747(6S1c0J6;7F6.040-7=7N7x7.6{7:3*796,177c0t5|7}4o603M7W7k1|262#0b0d1j0n1G2o0B1I7T7%7v7F0n1c0Z7R146$8q7s046u6w6y826i045+0b2y691J7L8E7@0,7`7$1c0G7T0/0P1c0%3K8I8o1c0E8Q3H7@0I8(3-6k1c0y5z4u7D8E6C0h3/8,4h7P1k0o2%0t2#8{4o0M8934936X8G8v8!87761c7B597D8?6(6C0D863d7M6h7*7173986-1c020V0B0N8P8M7w040P8~90929C7?9w9y9A9u179r010.7-8y8R049g8=9i9Z8E8s8G8f8J8n9d206d8T9+3U660n688x5.6(8p9^8r8}0$8 8m9I9U6s7:8%9J5@8O9O5^8W040T0$1H809j9|6D1I6p0|0Ba9a8a69V0Ga59h8D9k1c8_7Saq3$7|9o8N967KaD6=6@9~0n0R9@3E8E9`aO6(8.048:8#8A9X4C9Z6x8@669n3t9p8)8936anaA4+8t9(0n8KaW9.a2a:040DaW0EaY3Qa!9i9#7Hak9y0oa.a`4a7@0#7W1c0o0Z0Z2y7!ba4oaQ2+b47l6Z7paNbo9_7V9/8Fa}bx6t7;78ah5@6C7I6Ha99$8falb8807a4o0P0r1c030l0T1I0B8L5N6Bbf1591b9a)bp670D69aW7u9{5@9Q9tbA7 a/bb1c0,9BaH7FaT5R4ua$041 b(bJ9;9?b/7T9Q9SaWbCb a7b|b~b*aS0D8/5uc3awc5b%0$b)3Ea*a{7m7o6#cbbxaT58b;9Vcgcl9K04b}a99Q6N4m3H6Cc6cuc8bq7n6!7qbl9e6e7TaT0y5ocGa38AaocjcN70010k9Tcq7FcSctcv2+cx8|048d2:1I8h2o8k0n8mbZc+7/c$bx9Q2Scu0t0.111}0i0D0t0g0@0l0C1-0b0/0k0l0o0g0l0A0gaM0l1{1t2@1G0D0l0h1h1}0!c@aR7F77ch6h8OckcwaP8Satc^bFb$8IcUb`4x1cd18fd48j0g8l9*c!9,bwd?9Pc;df8mdi0g1udldndpdr0DdtdvdxdzdB1}dE9=0ldHdJdL0ldNcfc.cLdVc}dX04a_da4a9Q8Wa~cQ3-c`d%c|8a9Dd,d38id6d8cCd_01de3/d}dj0le1dodqdsdudwdydAdCec2@ejb^c-d)2udUa99-ccc;65aW0*c:7+0sdObudQ1ce=e)209Q0Xe_5?9VdZ4C1K5;5,1T5U0S5W1K0B5Yfe2;2-2b2d2/0o1{f9fc5)1Qf33H2#0s0d0h0o0/0t0d0H0c1c1C1E1G1I0lb02,1!1V040(0odJ1t2%0D1t6zf8a|9=b-6$fY0lbi3m0{0l2Y2K8e1}2y2Z8f2S9=2o69110H0ofI0leEdw0i2$0ld 0lb,f`0Q2o101|0l270tdxbd1X3u1R0L1u1r0~e51}2S6Gdj13f 1}f80l0Y0q0x0j0jf,gwf|f~eE0#0l0Fgaf fRgegygAgC0*gvgb0{d2gbb834fJf;czcY1}0b1t0B0l0WgN0l1g2Vf:g,g90ngb006P2#dw0V8ufn0^19fIgJ0Y342UfX5$3H221:1=1@ft4+6@6_e%b:dPb=c;cPe%cIdW6(7@6:e~6M6O7ZeJes6~c;b@eKdR5.0Sf%2#0n0i0Mdmh95=4sf%f`eff)f.f,008 0P0^0`0$g-g/2b0n2{118wf,dygegg1TgjfPfR8_a?2W0l0$0^0P1a2Qf~5:5$cWcA7qf%gn1;8IhPgw4ahc241?2C8r6@7Qaz5SfYghfN1RfQg:2:0g2%6G1}0Q002y8I0sfogE2O0k2ifWbXeW15dI0og90Z0B0^1}b-dI7BfN2 hb1=ihhf8E2H2y2A1c2N0q0P0$1ag,0viI0H1t5/5+f33e5.fYc47dbx896zbx0n8cgWd-eGd:d7d=hBc#hle`7{9a9~9chF7:fL06bE6h9$eEd9hscKeneCe{040:bei6g(hAhmjraCjed@e(dScRax8`hwbyaoaFbJaJ2oaMjFjh6hc(8;jGc,0J0+8Ca#craycV9F9~9Hbtjya7jTjQ9$8ujkj?epjob2bpjt7TbcjC1$6n1kbkjJ7zd^kb8Fj:9 91j~bvjL9Yj,c_b56FbIj`6@g*dgkaj%dbjghg4h6@ibeBepkzk2j8jdkx7~8Ahr4LhIi5fafp5Wfs0j0VdJdxg,0B0M1r85hN100pd2dw262y190hh(0`eS2S34bYfKh?1e6p3u1;d0fR0sh2i^2Yi45=fv0Mg2f7i5hXg5iC1DiFi?iJ1u0V0fg2g4h,912#gsh8gu0i3Kdnh%g.6E0D2#h%0niB0bg,2n103a0^8IjcgJ0x1}lEiLlIgvh-10l5fYk7j:7!f%0N1Kk 1ek 1|100^0V0^2Kd7lW00leg_lggch,g*d7f(14gdi:lLgJglf,hNg,hKhM0k91lUh~1gb7g,1f2:1t0R042:0D0^2)mjaL3M2Ygu5#hL912UfW0zid04ku8m0Q0ukDmHkI0b0JbCipl(0D3u0Sk}1efc0{0}0 04.