Caviarder un texte⚓︎

Avant de rendre public des dossiers sensibles, il arrive que certains organismes les « anonyment » en entier ou partiellement.

Dans le cadre de cet exercice, nous ne programmons qu'une version simpliste : « caviarder » un texte consiste à remplacer toutes les caractères alphabétiques situées dans une certaine plage d'indices par le caractère #.

Par exemple, pour le texte L'espion était J. Bond et les indices 15 (caractère J) et 21 (d) on obtient L'espion était #. ####.

On demande d'écrire la fonction caviarder qui prend en argument une chaîne de caractères texte, deux entiers debut et fin et renvoie le même texte caviardé entre les caractères d'indices debut et fin (inclus l'un et l'autre).

On garantit que debut est toujours inférieur ou égal à fin.

Selon l'usage informatique, le premier caractère de texte a pour indice 0. Ainsi le caractère d'indice 1 de "Hello" est "e".

Astuce

Si s est une chaîne de caractères, l'instruction s.isalpha() renvoie True si s n'est composée que de caractères alphabétiques.

Ainsi "é".isalpha() est évalué à True, "Bonjour !".isalpha() est évalué à False.

Exemples
>>> caviarder("L'espion était J. Bond", 15, 21)
"L'espion était #. ####"
>>> caviarder("Paul est un espion", 100, 200)
'Paul est un espion'
###(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
.128013lS]et-d5f18»uma«g,_/R=in 6)yqPhcL[(bsx.p;r4j'90"ov+w73k:é 2I030b08090j0r050F0!0A050j0F0F0q0Q090r0I0Q020t030F0h0i0i0j0K0w02060R050h0_0R0s0!000j0i0I0J0!0p08130K0x0h080F030o101214160~0I02031B1u1E0o1B0~0b0r0S0.0:0=0@0z0r0l0z051S0z090|030)0E05081N0;0?0Q1R1T1V1T091#1%1Z090K1C090z0.190F0I0j0s0@0#0Q1(1P0Q0d0+080s1h081Z1~20251*281%2b0i2d02040!0y0K0R0I0R0F0r1c1e0'1|0K0K080A2y1u2f0s1C0o1`2K1@1_1^1!0b2h0@1V0s2a2v1Z1K1M0/1)2U0r2W0s0R2!1Z0I2D1C2I2K2;0 1 1e2$262*0K13050|0!0e2H2^0}2@2g2`1*2|2~300#3320352I2T0Q3a0j2 020!0W3e2J0~3h380@3k3m0!0L3q3g2^3i3w300c3A3s3C3u3j0R2}3l300u3H362_1O393M3b3n0V3R3t3U3v3W3O3n0f3!3J3$3L3N3x0O3+373-3E020e0P3A1F2/1u2!2N0b1_2S3K0A2+2n0%1L1C2.082:343|460'4e3?2%0Q0X0|0'0d3A0!3S3D0d0|0A0j0S0r140'0K3|3#4l0{020D4E3,4l0s0|09080G4P4K4k264H0m4r4t3K4N020'0E1b4T3T4G0|4X1v344s4F2{0|280s4)3i4H0v0Y3H0!4 4:4L4=022D10050)094Y4;1*0R0|0q5a521*0F2302001q0R090J5m0h5o0J4~504Z3-4n020d3M5g4U390|0r5D4*260R0U5G4^4.3f515E3v0E0|0K200l084_3K4H4J5P2J5x4M5U022k5!3-5$5.4M4O4Q4S5'4j5J1*4{4|5v505w5b3v4w140j2F082D5I3i5d025f5_5R5{63024P4R5Z5_5)4V0|0C5;535H6n620Q4H075 606g3i5z0r4q6f6o5F4$084'596H6w6c00570J6e2;6C4!5G6a3K6Q6S6U4/6I6i4@6Z3-5L0|200b6+5=024x5W67696v5h0@6c0H6s6J0r0F3l0I0z0j700@5$5~5_0t6B7e6W3@5V1s0h570j6N6V6(0Q6c0T6%5Q7p5j0|5r5t017y5p6A607p5z080,6m2?6w4H4}7c7f6B7p4#557k586;5K0|7s7W6J6@664P6`2;0t7d616|4m7i090h0K5O7o6w7S7j7l7n340~0o4h4d3}810o401u0942862Q2L0j1$83401A5`3i2D0i0n0d0j0X080n0z0W0|1m1o1q1s0!7N2?1H351B0B0j0!5B0s2F0r1d4s806?4y4A0K4C1u8N0!0s0N080d0d2E7:1'0'0-1@200F5B3N2y0-8w0!100K0!0h2W0.680)2(1'0I0:5Y0!0b0N2(1K0A1s0H0!8E0!0E0R0h0/1'038N8,8T473n0b0R2x921d0A8;1'8m0r2D8;7;8`0h0G0a0A0r6 8B8g0$050!1s090!0j0h0=0r0!2u9S8d920N0Z0A0K9x1'971:9v9s2y9M1e1b0+72209O8^1'0j0I2.0R0A0z8~1a0-0k8G9+8K0s2W051%0!0g8y1F352!3i1,1U1W1Y8h3K2j2a2c0|2p069#0`9O0y0w1`1d3|4c5`2=4f8N7F4o8Y7!3v4v8O4z4B68786x0|5%7K7-4#6k5^aU5SaR024-7@aVaH6MaQ4WaJ3j4?2(a+0|7b7)7E6w5z2D7:7=a-7w5l5n5p7B5u6{a!6~aQ4#0M9p7?4f7LaS6rb56h0Qa b37Ab1b4a'a!6E6Gbpbi4#4%4(6O7-6#5p7t2J7g6=6ubt6b7x6$a-4#6*byb65M026/bL4waQb7bh3D5G73057577bX5#aS0va-7G7IbT6?b+4?5CbObu6Yb'5/4,b.0Aa-6-02a:b?3D5+2a11687m7Jbd7-5:b_6=aXc93f7p4{07b*7c9l4i822K8f3 0(0*0,02.