Conversion de chaînes de caractères

Étant donnée une chaîne de caractères, l'objectif est de produire une copie de cette chaîne convertie en bas de casse, en « minuscules » dit-on couramment.

Par exemple, la chaîne "Les algorithmes de Bellman-Ford et de Dijkstra" sera convertie en "les algorithmes de bellman-ford et de dijkstra".

On rappelle qu'un caractère est encodé par un nombre entier que l'on obtient avec la fonction ord. Par exemple ord('A') est évalué à 65. Les codes des caractères alphabétiques non accentués en majuscule se suivent : ord('A') vaut 65, ord('B') vaut 66, ord('C') vaut 67, ...

Réciproquement, étant donné un entier positif, on obtient le caractère encodé par cet entier avec la fonction chr. Par exemple chr(65) est évalué à 'A'.

On se limite à convertir les caractères allant de 'A' à 'Z'.

Compléter la fonction minuscule qui prend en paramètre une chaîne de caractères chaine et renvoie une nouvelle chaîne qui est la copie de la chaîne chaine convertie en minuscules.

Pour cela, on remarquera que si c_maj est un caractère en majuscule et c_min le même caractère en minuscule, alors la différence ord(c_min) - ord(c_maj) vaut 32.

Exemples
>>> minuscule('ABCDE')
'abcde'
>>> minuscule("Les algorithmes de Bellman-Ford et de Dijkstra")
'les algorithmes de bellman-ford et de dijkstra'
Fonction, opérateur ou module interdit

Dans cet exercice on interdit d'utiliser :

  • str.lower()
###(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èufvy n7ZaêS1me(P24C:jtwih)6Oo;bcdUg/0làqAp.rL,=+zk95Rxé050M0t0B0o0D0R0b0k0L0R0o0b0b0!010B0D0V010406050b0g0s0s0o0X0j040q0I0R0g100I0l0k020o0s0V0J0k0*0t1a0X0T0g0t0b050P17191b1d150V041B1I051L0P1L1N1I150M0D0i0^0`0|0~0E0D0O0E0R1#0E0B13050:0K0R0t1W0{0}011!1$1(1$0B1.1:1,0B0K0I0M1d1-0X1J0B0E0^1g0b0V0o0l0~0w011=1Y010h0=0t0l1o0t1,2d2f2k1@2n1:2q0s2s040a0k0v0X0I0V0I0b0D1j1l0.2b0X0X0t0L2N1B2u0l1J0P292Z0B2726280M2w0~1(0l2p2K1,1T1V0_1?2-0D2/0l231U1,0V2S1J2X2Z34162e1l2^2l2}0X1a0R130r2W3814372v3a1@3c3e130w3i2f3k2X2,013p0o3f040c3t2Y153w3n0~3z3B0x3E3v383x3K130)3N3G3P3I3y0I3d3A130G3U3l391X3o3Z3q040m3(3H3+3J3-3#040e3N1K321B2?2$0M2*3x0L232C0-1U1J310t333j3|450.4d3m3?010%130.0h3|3=2_010C130k4q3W4k0l0h130s2{0g0b0L0g1:4x4j4s12040u4K3*4s0l130L0E0;2/4Q3x4N0F0z3U0k4)4w4r3b4U2I0D0t3N4+4y4s0I130!4=3)3x0b2i0401014(4*4}3X4m040h3Z4|4,3o4U1b0o2U0t2S5c4@2l0I4u042{5l4L4-044V4X4;1C4e5d0~4N4%5z3u064*5I4?5t5e5v465s4R5n4`5P3Q0K133Z0M4Z3X4N4P5F2Y564z5f0X5h0B5j5y365B014#545J5K5Q1@580D4p5%045`5U5W0X5Y605)4M135$5;5m1@4 13010U53675=5@60623X4_04020R0B0J4{6n685u4g5:3j6o4k6q6s6u6w346D4S5V045X5Z4k5#6P4s6f510n6j6c5L5C134$5^5_555=4T5N0.5T6p5S6x6*4.6-6;6d0~6q0#6.4k4D130c3s605H6(6y5M450V4:6}4^6:6J763J4.796B3u6K5R046|6^6Z3y6M4V0X6S2l6R6k6_3y6?7j5(6l6#6%7f4l132S0B0g0X0l7b6z4/7C3k0P6A2Z4b2Z401B0B427!2(2!22242$0o1/4c3 491H4i5{0~2S0s0d0h0o0%0t0d0E0c131t1v1x1z0k5E361O3k1I0y0/5.0k1T0h0h0,2S0l0L1;2P710k2p2%1;1:0@8t4:0X0@1x0D8s8n460k0g395g2U0f2S8E0k4D0l4F4H1:8s0B0k8U0s0p2B0^8K0B8M1;2p8P0o0A8S4I1;0l001z8W310I0K7-1:2B0l8^0{8X1;0h0X0g2M8h0g0k4W0b1b0M0W1K8c040H391k2L0M8l8v870r0w0e0k4b4D5j0@0L8%8)8x8F9n0@2e0X8H1l8y5j0k3A0`8 8h1;0Q0k0S0k9r0m0W0k0Y879z5,8L2S0@9N2f8W2P056A3x1_1%1)1+7?4~0r13000U003|7U46619U9/8G3X9=1{1*2t7z0b9{04000n9 67a14h0k0b1k8W2p4g0,0b069G929C109x9M0R9O9-1;0G0)9T0k0(0Q0Zam0I978+0K2{0;8N9.9:a71)a99^7H6 040r0Qa(a(3haj7VaHa52PaW1`9@ab7qa#a%0ra`0Qa07V9f8b7=0N2/0k0X0f0O8U2L1p8U0V5j2B1}9,9Q9u1?9L0.0@1a8.4G8:9*0g0+8P4Ebq8w8Vb50,0L112H868~0BaL068C8s0b8W0`8P8!1;2J7M0k0B0I4Faw8$9%8(9)aA0V4W0K0,10860@2}1l5h8o8 0gasaL450l2LbM1;9U0s2~2n9L8U0.bt0D0f8#aQ8W9U9G109H2PbO0O0o0g4V1;0ub90t4I8E0i0D9c0O0t8|0t0F9Y9g7=9!2b0M0ocvbia/1;a;9?1|a@7@01ad9|9~a~a2bL8WcJ9;aXa?9_3Xa_a(7P1@a#a)a+8a7Vb_0t1h8DaUa64ka8c#7HcRaf0oaic/cV8@4waVc`c!cNc$6~0D3ga%c*0~c,a*cU4haL8U4gcG8p1;cYcLaYcO9`9|ahdj4ccWd5c_4sc{d9a!dca$0Qa{dJa}a,a2c;c?cId6dDd8aada6Tae000$d14eakdzd4drd7a=dF5=a_a{a|dy040W060H0XaLc08i8z0^1;cabi9S9U0rb50tcs8taH8-bW5.9H71dl1;d|5~d~2Pe59U9S2Se89P9Uan4F2%aS1;71b01R3 0/0;0?04.