Annuaire

On considère dans cet exercice des annuaires associant à des noms de personnes, leur numéro de téléphone.

Ces annuaires sont représentés en Python par des dictionnaires {nom: numéro}. Par exemple :

Exemple d'annuaire
annuaire = {
    "Armand": "01.17.58.88",
    "Arnaud": "02.56.78.90",
    "Nicole": "02.34.56.78",
    "Nolann": "04.55.42.21",
    "Céline": "02.34.56.78",
}

On remarque que :

  • tous les noms sont différents ;
  • tous les numéros sont fournis sous forme de chaînes de caractères ;
  • tous les numéros débutent par "01", "02", "03", "04" ou "05" (le "03" et le "05" n'apparaissent pas dans l'exemple mais sont utilisés dans les tests secrets) ;
  • les numéros ne comportent que 4 nombres (et pas 5 comme les numéros français) sans que cela ne modifie l'exercice.

Ces différentes observations seront vraies dans tous les annuaires utilisés dans cet exercice.

On souhaite dans les différentes questions ci-dessous filtrer de tels annuaires. Il est donc demandé pour chaque question de renvoyer un dictionnaire {nom: numéro}. Ces dictionnaires de résultats peuvent contenir 0, 1 ou plusieurs couples (nom, numéro).

Rappels sur les dictionnaires

On rappelle que si dico est un dictionnaire Python :

  • for cle in dico: permet de parcourir ses clés ;
  • for cle in dico.keys(): permet aussi de parcourir ses clés ;
  • for valeur in dico.values(): permet de parcourir ses valeurs ;
  • for (cle, valeur) in dico.items(): permet de parcourir ses couples (cle, valeur).
1. Filtrer par nom

Écrire la fonction filtre_nom qui prend en paramètres un annuaire (dict) et un nom (str) et renvoie le dictionnaire {nom: numéro} donnant le numéro de la personne cherchée.

Exemples
>>> annuaire = {
...     "Armand": "01.17.58.88",
...     "Arnaud": "02.56.78.90",
...     "Nicole": "02.34.56.78",
...     "Nolann": "04.55.42.21",
...     "Céline": "02.34.56.78",
... }
>>> filtre_nom(annuaire, "Nolann")
{'Nolann': '04.55.42.21'}
>>> filtre_nom(annuaire, "Cédric")
{}

###(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

.128013s3Oo_;bcdufvg/lyàq napS.r1meh,(P2=4:}Ctwki][5R{)é050j0C0N0v0Q0p0b0t0i0p0v0b0b0I010N0Q0w010406050b0k0B0B0v0z0q040x0e0p0k0=0e0u0t020v0B0w0g0t0U0C0 0z0s0k0C0b050o0|0~10120`0w041q1x051A0o1A1C1x0`0j0Q0m0*0,0.0:0D0Q0n0D0p1Q0D0N0^050#0h0p0C1L0-0/011P1R1T1R0N1Z1#1X0N0h0e0j121Y0z1y0N0D0*150b0w0v0u0:0H011%1N010l0%0C0u1d0C1X2224291)2c1#2f0B2h040a0t0G0z0e0w0e0b0Q181a0Z200z0z0C0i2C1q2j0u1y0o1~2O0N1|1{1}0j2l0:1T0u2e2z1X1I1K0+1(2Y0Q2!0u1^1J1X0w2H1y2M2O2_0{231a2*2a2/0z0 0p0^0A2L2}0_2|2k2 1)31330^0H3724392M2X013e0v34040c3i2N0`3l3c0:3o3q0J3t3k2}3m3z0^0T3C1z2@1q2(2R0j2V3m0i1^2r0Y1J1y2?0C2^383J3S0Z3!3b1M1)0P0^0Z0l3J3w3+0:0O0^0t3;3E3x3n0l0^2n2S0C0f2/0B3{3*2+010@040F472~3?3n0^240u0k0$2H4e3m4b0E3C3`3=490u0^454o3}4b0W0K3C060t4G4t3|4g3-040Q3:1r384I48304x0e464P3j4R4f490e3^4M0u4s3a4!4T044j4l0Q4n4X2N4+4p0^4D4?0_4H4~4Z3m4L2H0N0k0z4)4|504A0^0V4z4g4w044y4|4^5a044{2_595e4i0u4k4m0C5d494b0S5v4-5h2{4u2a4b0R0L4E4~5j4K0^0C0(5u5i5D1)4b5m384F4 4G5K49520!55575n5Z5E5b5H4|0`0o3%3Z3K5=0o3N1q0N3P5`2T2P1@1_2R0v1!5@3N1w3)4,1)2H0B0f0l0v0P430D0c0^1i1k1m1o0t5U3j1z391x0M0!0N1$0v0w2y0i0D1$1o0N0t0X1m1J3p2e6x0t0r0*5N1#200u2A0b0#0u6G6P6e4;1$0k1a230z3S550)0!0t6(1$0b0e0z0=6y6Y0Q0i0?0X0C0y0t0d1a170%0Q0b1$055;4.5r4:2H0y2B1j0b0F0W1q7b0t6J0t2H0u0m0e0Q1$1#0)6,0w7x3`7b0F0+0X0E0t0m6L557l5:3T040t0j0k7Q6|2C2f6$0y6s1H1J3m1+1S1U1W683m2n2e2g0^2t0x0i0z0?6G0G0q1~193J3Y682`3#7b5*3,3.0C4O5C4J494%3`5Q8a303 04412H444V5z5S0^4d8e4S3d5q5s6$8n0:4q4*5R3y4U4W898s8y0^4C5I4H840:4L0l6@8A8f8o4c8x4h040w0C0z6?5r5P8F698H044r588M8W4k2q2w8V4B8R8G014$0^2-8^8)8W4/5t8V0e0^7Y8r8 5f7h0B1p974_4c8J5.5X5Y8B014L4N8~3F0^8Y8!192!9o3}94040I0I9v5p5g8m9d5k6q3u9i4 8.5#54569B5w5b8V5f9r8#9u9F4g5T9P5A0}8Z0e8?0^5-2_5W9j8S8N0^535%9!8T0V9+5V7m7O5?2O661B04730t8Y170t0v0k0.0Qa42w0i0X0Z0z0t2e6T6W0z0k77246G6(7T2J0Q9t5tai2~4V2?0X6D6Uau1a4{1G3V2)4g7%1-1V2i9/2b2d2p2r7;7?7^2u7{0D7}5i7 4+816r839k4L3/8V8c9S8h8j435B3#9k4b8q8(9p7c8v4=a|5k8,5)9k5fa@6ra_8I9H4}8La+9;5$9O8-b9045c9X4v9q8Z9V8%a^aP9ZbiaPb69$8=bv8_8O8QbA8 a`9Sbo9s8$9)8+9@8C5gby9(bm5+047Mb4aP8{4(bN907d92bS1)9x96b19C9a9cb,9Q9fb!9m884Q8.9Tbp9tbr4Y8.9x9zb!b69Eb:bT9`3j5/831D3L5^3W5/0Z0#0%0b04.

###(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

.128013s3Oo_;bcdufvg/lyàq napS.r1meh,(P2=4:}Ctwki][5R{)é050j0C0N0v0Q0p0b0t0i0p0v0b0b0I010N0Q0w010406050b0k0B0B0v0z0q040x0e0p0k0=0e0u0t020v0B0w0g0t0U0C0 0z0s0k0C0b050o0|0~10120`0w041q1x051A0o1A1C1x0`0j0Q0m0*0,0.0:0D0Q0n0D0p1Q0D0N0^050#0h0p0C1L0-0/011P1R1T1R0N1Z1#1X0N0h0e0j121Y0z1y0N0D0*150b0w0v0u0:0H011%1N010l0%0C0u1d0C1X2224291)2c1#2f0B2h040a0t0G0z0e0w0e0b0Q181a0Z200z0z0C0i2C1q2j0u1y0o1~2O0N1|1{1}0j2l0:1T0u2e2z1X1I1K0+1(2Y0Q2!0u1^1J1X0w2H1y2M2O2_0{231a2*2a2/0z0 0p0^0A2L2}0_2|2k2 1)31330^0H3724392M2X013e0v34040c3i2N0`3l3c0:3o3q0J3t3k2}3m3z0^0T3C1z2@1q2(2R0j2V3m0i1^2r0Y1J1y2?0C2^383J3S0Z3!3b1M1)0P0^0Z0l3J3w3+0:0O0^0t3;3E3x3n0l0^2n2S0C0f2/0B3{3*2+010@040F472~3?3n0^240u0k0$2H4e3m4b0E3C3`3=490u0^454o3}4b0W0K3C060t4G4t3|4g3-040Q3:1r384I48304x0e464P3j4R4f490e3^4M0u4s3a4!4T044j4l0Q4n4X2N4+4p0^4D4?0_4H4~4Z3m4L2H0N0k0z4)4|504A0^0V4z4g4w044y4|4^5a044{2_595e4i0u4k4m0C5d494b0S5v4-5h2{4u2a4b0R0L4E4~5j4K0^0C0(5u5i5D1)4b5m384F4 4G5K49520!55575n5Z5E5b5H4|0`0o3%3Z3K5=0o3N1q0N3P5`2T2P1@1_2R0v1!5@3N1w3)4,1)2H0B0f0l0v0P430D0c0^1i1k1m1o0t5U3j1z391x0M0!0N1$0v0w2y0i0D1$1o0N0t0X1m1J3p2e6x0t0r0*5N1#200u2A0b0#0u6G6P6e4;1$0k1a230z3S550)0!0t6(1$0b0e0z0=6y6Y0Q0i0?0X0C0y0t0d1a170%0Q0b1$055;4.5r4:2H0y2B1j0b0F0W1q7b0t6J0t2H0u0m0e0Q1$1#0)6,0w7x3`7b0F0+0X0E0t0m6L557l5:3T040t0j0k7Q6|2C2f6$0y6s1H1J3m1+1S1U1W683m2n2e2g0^2t0x0i0z0?6G0G0q1~193J3Y682`3#7b5*3,3.0C4O5C4J494%3`5Q8a303 04412H444V5z5S0^4d8e4S3d5q5s6$8n0:4q4*5R3y4U4W898s8y0^4C5I4H840:4L0l6@8A8f8o4c8x4h040w0C0z6?5r5P8F698H044r588M8W4k2q2w8V4B8R8G014$0^2-8^8)8W4/5t8V0e0^7Y8r8 5f7h0B1p974_4c8J5.5X5Y8B014L4N8~3F0^8Y8!192!9o3}94040I0I9v5p5g8m9d5k6q3u9i4 8.5#54569B5w5b8V5f9r8#9u9F4g5T9P5A0}8Z0e8?0^5-2_5W9j8S8N0^535%9!8T0V9+5V7m7O5?2O661B04730t8Y170t0v0k0.0Qa42w0i0X0Z0z0t2e6T6W0z0k77246G6(7T2J0Q9t5tai2~4V2?0X6D6Uau1a4{1G3V2)4g7%1-1V2i9/2b2d2p2r7;7?7^2u7{0D7}5i7 4+816r839k4L3/8V8c9S8h8j435B3#9k4b8q8(9p7c8v4=a|5k8,5)9k5fa@6ra_8I9H4}8La+9;5$9O8-b9045c9X4v9q8Z9V8%a^aP9ZbiaPb69$8=bv8_8O8QbA8 a`9Sbo9s8$9)8+9@8C5gby9(bm5+047Mb4aP8{4(bN907d92bS1)9x96b19C9a9cb,9Q9fb!9m884Q8.9Tbp9tbr4Y8.9x9zb!b69Eb:bT9`3j5/831D3L5^3W5/0Z0#0%0b04.
2. Filtrer par initiale

Écrire la fonction filtre_initiale qui prend en paramètres un annuaire (dict) et une lettre majuscule (str) et renvoie le dictionnaire {nom: numéro} donnant le numéro de toutes les personnes dont l'initiale est celle cherchée.

Exemples
>>> annuaire = {
...     "Armand": "01.17.58.88",
...     "Arnaud": "02.56.78.90",
...     "Nicole": "02.34.56.78",
...     "Nolann": "04.55.42.21",
...     "Céline": "02.34.56.78",
... }
>>> filtre_initiale(annuaire, "N")
{'Nicole': '02.34.56.78', 'Nolann': '04.55.42.21'}
>>> filtre_initiale(annuaire, "P")
{}

###(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

.128013s3Oo_;bcdufvg/0lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0C0M0v0P0q0b0t0i0q0v0b0b0I010M0P0w010406050b0k0B0B0v0z0r040x0e0q0k0=0e0u0t020v0B0w0g0t0T0C0 0z0s0k0C0b050o0|0~10120`0w041q1x051A0o1A1C1x0`0j0P0m0*0,0.0:0D0P0n0D0q1Q0D0M0^050#0h0q0C1L0-0/011P1R1T1R0M1Z1#1X0M0h0e0j121Y0z1y0M0D0*150b0w0v0u0:0H011%1N010l0%0C0u1d0C1X2224291)2c1#2f0B2h040a0t0G0z0e0w0e0b0P181a0Z200z0z0C0i2C1q2j0u1y0o1~2O0M1|1{1}0j2l0:1T0u2e2z1X1I1K0+1(2Y0P2!0u1^1J1X0w2H1y2M2O2_0{231a2*2a2/0z0 0q0^0A2L2}0_2|2k2 1)31330^0H3724392M2X013e0v34040c3i2N0`3l3c0:3o3q0J3t3k2}3m3z0^0S3C3v3E3x3n0e323p0^0X3C1z2@1q2(2R0j2V3m0i1^2r0Y1J1y2?0C2^383T3$0Z3.3b1M1)0O0^0Z0l3T3w3^0:0N0^0t3~3L403n0l0^2n2S0C0f2-2B0P3p0C453@2+010@040F4k2~470u0^240u0k0$2H4r3m4o0E3C443 4m4u044f0=4i4B3M4o0V0K3J0t4U4G464I0^2H0|0q0#0M4F3a4s4m0e0^0I4)4H2a4o0U0L4T4V4*3m3`040l3O4:4X300^0w0C0z0b192!514l2a0e424K0u5b4+53044w4y0P4A1r3/4;1)4o4S5q3j064V5z4W5c3_0^0P3}5w2N5B5j3d5456580u5a5H3?5K0:4o0R4O470B0P0^0p5X4m4o0Q5i3m4-040I4/5R5J3F5E0u4g4N5R4{4P0^5v2_5y5A625|4t4Z1o0k4$0v4(5{5s5U0^5W6c525L045557594j6h5C6e045*5;644,4.5+3M4J5m4z6o2{6d4n6f5%5k6l5O5Q6E6i6r6t605z6v2a4}2H0M0k0z5h6u6F4J4!684%3J1q3;3-3U6.0o3X1q0M3Z6?2T2P1@1_2R0v1!6:3X1w5S3m2H0B0f0l0v0O4d0D0c0^1i1k1m1o0t5 3/1D391x0d1a55170t0v0k0.0P0t2?0e0i0W0Z0z0t2e200u0b2S0k0P0b240M0t0k2D0P2J0P596C7G2~0e1e0z0W0D2e2A197G7Q056-5l5P5n2H0y2B1j0b0F0V6,3%040t1m7y2H0u0m0e0P1$1#0)3$0k0w8a447:0F0+0W0E0t0m4i6Y7}0o7:0t0j0k8t7U2C2f5o1$5v1G3)2)471+1S1U1W743M2n2e2g0^2t0x0i0z0?7Q0G0r1~193T3,5S2`3/7:6T5D043|6I1)5f446p5T484a0%4c4e5^4M1#8/6r4q8?5?7;4x6C906G044E6#6O3n5@5_8 935}044R4_4U8+0:6V0!6Y6!2_5=9j0U984J6K6n985u6y65044x2q2w9E4m4}4 0z9K4=0^926N6q9e6k5N9B9i474D9P6j9H560e9C0^8q9u9o015e5@9$3y4v7=979Z6w040y9y5E0M7`9+4p9-389v474}5F9?9V9A5P6D5r9d5V985Z5#a36Qa69/5-5/ab4J4L4h9h9T8@4o4^5R0`8r7 6/2O723W0!0$0(04.

###(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

.128013s3Oo_;bcdufvg/0lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0C0M0v0P0q0b0t0i0q0v0b0b0I010M0P0w010406050b0k0B0B0v0z0r040x0e0q0k0=0e0u0t020v0B0w0g0t0T0C0 0z0s0k0C0b050o0|0~10120`0w041q1x051A0o1A1C1x0`0j0P0m0*0,0.0:0D0P0n0D0q1Q0D0M0^050#0h0q0C1L0-0/011P1R1T1R0M1Z1#1X0M0h0e0j121Y0z1y0M0D0*150b0w0v0u0:0H011%1N010l0%0C0u1d0C1X2224291)2c1#2f0B2h040a0t0G0z0e0w0e0b0P181a0Z200z0z0C0i2C1q2j0u1y0o1~2O0M1|1{1}0j2l0:1T0u2e2z1X1I1K0+1(2Y0P2!0u1^1J1X0w2H1y2M2O2_0{231a2*2a2/0z0 0q0^0A2L2}0_2|2k2 1)31330^0H3724392M2X013e0v34040c3i2N0`3l3c0:3o3q0J3t3k2}3m3z0^0S3C3v3E3x3n0e323p0^0X3C1z2@1q2(2R0j2V3m0i1^2r0Y1J1y2?0C2^383T3$0Z3.3b1M1)0O0^0Z0l3T3w3^0:0N0^0t3~3L403n0l0^2n2S0C0f2-2B0P3p0C453@2+010@040F4k2~470u0^240u0k0$2H4r3m4o0E3C443 4m4u044f0=4i4B3M4o0V0K3J0t4U4G464I0^2H0|0q0#0M4F3a4s4m0e0^0I4)4H2a4o0U0L4T4V4*3m3`040l3O4:4X300^0w0C0z0b192!514l2a0e424K0u5b4+53044w4y0P4A1r3/4;1)4o4S5q3j064V5z4W5c3_0^0P3}5w2N5B5j3d5456580u5a5H3?5K0:4o0R4O470B0P0^0p5X4m4o0Q5i3m4-040I4/5R5J3F5E0u4g4N5R4{4P0^5v2_5y5A625|4t4Z1o0k4$0v4(5{5s5U0^5W6c525L045557594j6h5C6e045*5;644,4.5+3M4J5m4z6o2{6d4n6f5%5k6l5O5Q6E6i6r6t605z6v2a4}2H0M0k0z5h6u6F4J4!684%3J1q3;3-3U6.0o3X1q0M3Z6?2T2P1@1_2R0v1!6:3X1w5S3m2H0B0f0l0v0O4d0D0c0^1i1k1m1o0t5 3/1D391x0d1a55170t0v0k0.0P0t2?0e0i0W0Z0z0t2e200u0b2S0k0P0b240M0t0k2D0P2J0P596C7G2~0e1e0z0W0D2e2A197G7Q056-5l5P5n2H0y2B1j0b0F0V6,3%040t1m7y2H0u0m0e0P1$1#0)3$0k0w8a447:0F0+0W0E0t0m4i6Y7}0o7:0t0j0k8t7U2C2f5o1$5v1G3)2)471+1S1U1W743M2n2e2g0^2t0x0i0z0?7Q0G0r1~193T3,5S2`3/7:6T5D043|6I1)5f446p5T484a0%4c4e5^4M1#8/6r4q8?5?7;4x6C906G044E6#6O3n5@5_8 935}044R4_4U8+0:6V0!6Y6!2_5=9j0U984J6K6n985u6y65044x2q2w9E4m4}4 0z9K4=0^926N6q9e6k5N9B9i474D9P6j9H560e9C0^8q9u9o015e5@9$3y4v7=979Z6w040y9y5E0M7`9+4p9-389v474}5F9?9V9A5P6D5r9d5V985Z5#a36Qa69/5-5/ab4J4L4h9h9T8@4o4^5R0`8r7 6/2O723W0!0$0(04.
3. Filtrer par numéro

Écrire la fonction filtre_inverse qui prend en paramètres un annuaire (dict) et un numéro de téléphone (str) et renvoie le dictionnaire {nom: numéro} contenant toutes les personnes dont le numéro est celui cherché.

Exemples
>>> annuaire = {
...     "Armand": "01.17.58.88",
...     "Arnaud": "02.56.78.90",
...     "Nicole": "02.34.56.78",
...     "Nolann": "04.55.42.21",
...     "Céline": "02.34.56.78",
... }
>>> filtre_inverse(annuaire, "01.17.58.88")
{'Armand': '01.17.58.88'}
>>> filtre_inverse(annuaire, "02.34.56.78")
{'Nicole': '02.34.56.78', 'Céline': '02.34.56.78'}
>>> filtre_inverse(annuaire, "03.43.69.47")
{}

###(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

.128013s3Oo_;bcdufvg/lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0B0L0u0O0p0b0s0i0p0u0b0b0H010L0O0v010406050b0k0A0A0u0y0q040w0e0p0k0;0e0t0s020u0A0v0g0s0S0B0~0y0r0k0B0b050o0{0}0 110_0v041p1w051z0o1z1B1w0_0j0O0m0)0+0-0/0C0O0n0C0p1P0C0L0@050!0h0p0B1K0,0.011O1Q1S1Q0L1Y1!1W0L0h0e0j111X0y1x0L0C0)140b0v0u0t0/0G011$1M010l0$0B0t1c0B1W2123281(2b1!2e0A2g040a0s0F0y0e0v0e0b0O17190Y1 0y0y0B0i2B1p2i0t1x0o1}2N0L1{1`1|0j2k0/1S0t2d2y1W1H1J0*1%2X0O2Z0t1@1I1W0v2G1x2L2N2^0`22192)292.0y0~0p0@0z2K2|0^2{2j2~1(30320@0G3623382L2W013d0u33040c3h2M0_3k3b0/3n3p0I3s3j2|3l3y0@0R3B3u3D3w3m0e313o0@0W3B1y2?1p2%2Q0j2U3l0i1@2q0X1I1x2=0B2@373S3#0Y3-3a1L1(0N0@0Y0l3S3v3@0/0M0@0s3}3K3 3m0l0@2m2R0B0f2,0m0B0y0b0B443?2*010?040E4k2}460t0@230t0k0#2G4r3l4o0D3B433~4m4u044x0A4B3L4o0U0J3I0s4T4G454I0@2G0{0p0!0L4F394s4m0e0@0H4(4H294o0T0K4S4U4)3l3_040l3N4/4W2 0@0v4g0b182Z4N464D504l524K0|4g0e5c4*290e41042,5j3E4v0t4x4z4j1q3.4:1(4,040x594X5o0L1i1o5x3i4`4O0@0E4Q4^4U4_5z0/4|0O3|5K2M4V5d3c0@4L5h5q3L5B0H4.5Z045#5k5%5f4M5:5M5a0@4R5:065S615T515@4Z0k4#0u4%5`5U4n0@0Q5E5e544h575w2`6c4o0P5+465-6q5F5)2v5R5=4{4Y0Z0k0y0t6t5e66686a2^0_0o3:3,3T6O0o3W1p0L3Y6T2S2O1?1^2Q0u1Z6Q3W1v3=5?0/2G0A0f0l0u0N4c0C0c0@1h1j1l1n0s5~2`1C381w0d1954160s0u0k0-0O0s2=0e0i0V0Y0y0s2d1 0t0b2R0k0O0b230L0s0k2C0O2I0O575v7l2}0e1d0y0V0C2d2z187l7v056N044w4y0O2G0x2A5I5P1p7R0s1l7d2G0t0m0e0O1#1!0(3#0k0v7:437R0E0*0V0D0s0m3o0B6C0U7#3$5;0j0k0s1H7A7C7V1#5~1F3(2(461*1R1T1V6+3l2m2d2f0@2s0w0i0y0=7v0F0q1}183S3+6+2_3.7R5{4m4|3{6g1(5n436b643x484}0$4b4d7+556l5y8U6d4p8P3x5s5u8e8,8*4E5:6y3L4J4L8;4P703760635$5V6A0L6C6E8@8L4;0@0T8;4J6i565t8%5L6n5}6F5@6v5i986c4|4~0y9m0/4o4q8T923m53556k8|0@8?2^8^4t5(5g6w9z6,8*849q8)5m0@5p9S9A4J7T5v8;5B5D9O5r5G5I9F4p9R9I993^9V5Y9:6c8`9M9p9^9T4-5/9}9Y9L5_6m8)4o4@5 853;6P2N6)3V0Z0#0%04.

###(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

.128013s3Oo_;bcdufvg/lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0B0L0u0O0p0b0s0i0p0u0b0b0H010L0O0v010406050b0k0A0A0u0y0q040w0e0p0k0;0e0t0s020u0A0v0g0s0S0B0~0y0r0k0B0b050o0{0}0 110_0v041p1w051z0o1z1B1w0_0j0O0m0)0+0-0/0C0O0n0C0p1P0C0L0@050!0h0p0B1K0,0.011O1Q1S1Q0L1Y1!1W0L0h0e0j111X0y1x0L0C0)140b0v0u0t0/0G011$1M010l0$0B0t1c0B1W2123281(2b1!2e0A2g040a0s0F0y0e0v0e0b0O17190Y1 0y0y0B0i2B1p2i0t1x0o1}2N0L1{1`1|0j2k0/1S0t2d2y1W1H1J0*1%2X0O2Z0t1@1I1W0v2G1x2L2N2^0`22192)292.0y0~0p0@0z2K2|0^2{2j2~1(30320@0G3623382L2W013d0u33040c3h2M0_3k3b0/3n3p0I3s3j2|3l3y0@0R3B3u3D3w3m0e313o0@0W3B1y2?1p2%2Q0j2U3l0i1@2q0X1I1x2=0B2@373S3#0Y3-3a1L1(0N0@0Y0l3S3v3@0/0M0@0s3}3K3 3m0l0@2m2R0B0f2,0m0B0y0b0B443?2*010?040E4k2}460t0@230t0k0#2G4r3l4o0D3B433~4m4u044x0A4B3L4o0U0J3I0s4T4G454I0@2G0{0p0!0L4F394s4m0e0@0H4(4H294o0T0K4S4U4)3l3_040l3N4/4W2 0@0v4g0b182Z4N464D504l524K0|4g0e5c4*290e41042,5j3E4v0t4x4z4j1q3.4:1(4,040x594X5o0L1i1o5x3i4`4O0@0E4Q4^4U4_5z0/4|0O3|5K2M4V5d3c0@4L5h5q3L5B0H4.5Z045#5k5%5f4M5:5M5a0@4R5:065S615T515@4Z0k4#0u4%5`5U4n0@0Q5E5e544h575w2`6c4o0P5+465-6q5F5)2v5R5=4{4Y0Z0k0y0t6t5e66686a2^0_0o3:3,3T6O0o3W1p0L3Y6T2S2O1?1^2Q0u1Z6Q3W1v3=5?0/2G0A0f0l0u0N4c0C0c0@1h1j1l1n0s5~2`1C381w0d1954160s0u0k0-0O0s2=0e0i0V0Y0y0s2d1 0t0b2R0k0O0b230L0s0k2C0O2I0O575v7l2}0e1d0y0V0C2d2z187l7v056N044w4y0O2G0x2A5I5P1p7R0s1l7d2G0t0m0e0O1#1!0(3#0k0v7:437R0E0*0V0D0s0m3o0B6C0U7#3$5;0j0k0s1H7A7C7V1#5~1F3(2(461*1R1T1V6+3l2m2d2f0@2s0w0i0y0=7v0F0q1}183S3+6+2_3.7R5{4m4|3{6g1(5n436b643x484}0$4b4d7+556l5y8U6d4p8P3x5s5u8e8,8*4E5:6y3L4J4L8;4P703760635$5V6A0L6C6E8@8L4;0@0T8;4J6i565t8%5L6n5}6F5@6v5i986c4|4~0y9m0/4o4q8T923m53556k8|0@8?2^8^4t5(5g6w9z6,8*849q8)5m0@5p9S9A4J7T5v8;5B5D9O5r5G5I9F4p9R9I993^9V5Y9:6c8`9M9p9^9T4-5/9}9Y9L5_6m8)4o4@5 853;6P2N6)3V0Z0#0%04.
4. Filtrer par région

En France, les numéros de téléphones fixes débutent par un code de région qui indique la région de résidence de l'abonné : "01", "02", "03", "04" ou "05".

Écrire la fonction filtre_region qui prend en paramètres un annuaire (dict) et un code de région (str) et renvoie le dictionnaire {nom: numéro} donnant le numéro de toutes les personnes dont le numéro débute par le code de région cherché.

Exemples
>>> annuaire = {
...     "Armand": "01.17.58.88",
...     "Arnaud": "02.56.78.90",
...     "Nicole": "02.34.56.78",
...     "Nolann": "04.55.42.21",
...     "Céline": "02.34.56.78",
... }
>>> filtre_region(annuaire, "01")
{'Armand': '01.17.58.88'}
>>> filtre_region(annuaire, "02")
{'Arnaud': '02.56.78.90', 'Nicole': '02.34.56.78', 'Céline': '02.34.56.78'}

###(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

.128013s3Oo_;bcdufvg/lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0B0L0u0O0p0b0s0i0p0u0b0b0H010L0O0v010406050b0k0A0A0u0y0q040w0e0p0k0;0e0t0s020u0A0v0g0s0S0B0~0y0r0k0B0b050o0{0}0 110_0v041p1w051z0o1z1B1w0_0j0O0m0)0+0-0/0C0O0n0C0p1P0C0L0@050!0h0p0B1K0,0.011O1Q1S1Q0L1Y1!1W0L0h0e0j111X0y1x0L0C0)140b0v0u0t0/0G011$1M010l0$0B0t1c0B1W2123281(2b1!2e0A2g040a0s0F0y0e0v0e0b0O17190Y1 0y0y0B0i2B1p2i0t1x0o1}2N0L1{1`1|0j2k0/1S0t2d2y1W1H1J0*1%2X0O2Z0t1@1I1W0v2G1x2L2N2^0`22192)292.0y0~0p0@0z2K2|0^2{2j2~1(30320@0G3623382L2W013d0u33040c3h2M0_3k3b0/3n3p0I3s3j2|3l3y0@0R3B3u3D3w3m0e313o0@0W3B1y2?1p2%2Q0j2U3l0i1@2q0X1I1x2=0B2@373S3#0Y3-3a1L1(0N0@0Y0l3S3v3@0/0M0@0s3}3K3 3m0l0@2m2R0B0f2G0n0O18443?2*010?040E4i2}460t0@230t0k0#2G4p3l4m0D3B433~4k4s044e4g0t4z3L4m0U0J3I0s4S4E454G0@2G0{0p0!0L4D394q4k0e0@0H4%4F294m0T0K4R4T4(3l3_040l3N4.4V2 0@0v0B0y0b182Z4M464B4 4j51044v2p2v5c4)290e41042,5j3E4t0t4v4x0B594*0@0x5x5e2A1i1o1q3.4/1(4m0E4P4@4T4^5I0/4{0O3|5G3i4U5d3c0@5g540e5B5J0@0Q5(0/0A0O345,4l0@0P5q3L4+040H4-5V2M5X5k5Z4I0B4f4h5~3=610/4m5+674_3L5.5:6d5Q5=040P4Q67065O6q5P50624Y0k4!0u4$6i6t6a5*5;4H5355575w6A5Y6C6l5^465`5}2^605r5f0|5$5N6T3L4{2G0L0k0y4L676Z4r4X1n6w4#3I1p3:3,3T6^0o3W1p0L3Y6}2S2O1?1^2Q0u1Z6`3W1v683l2G0A0f0l0u0N4c0C0c0@1h1j1l1n0s6n2`1C381w0d1953160s0u0k0-0O0s2=0e0i0V0Y0y0s2d1 0t0b2R0k0O0b230L0s0k2C0O2I4K2e0O2G7N2}0e1d0y0V0C2d2z187N7X056@044u4w7)0B0x5D0A0b5L6?3$040s1l7F2G0t0m0e0O1#1!0(3#0k0v8i437{0E0*0V0D0s0m3o0B6(0U863;0s0j0k8C7#2B7(7*6n1F3(2(461*1R1T1V7b3L2m2d2f0@2s0w0i0y0=7X0F0q1}662`3+682_3.7{6e464{3{5;5n436K6947490$4b4d644K5;5K6E5s5u7 960@4C6+8?4W63656*2`6j4O7s376p6s6L016#0Z6(9k376,4k4;98046G565t6J9l6B6k9o5W9g5e5#5i9f6j4{4}0y6O9A0@4o8}6U9E6I9c049e6S9N629P5%9!4N0@8z9R9J5m0@5p9@9s4H7}5v5;5`5A9:6-5o0L5E9(859|8~5S5U9+6j4H9.9(6c9I9s6g0435a49X6Nab3l6Q6R9y9,3x6.9jaj5;anapal8~4m0P4?6o8A6`8.3V3)0_6{0Z0#0%04.

###(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

.128013s3Oo_;bcdufvg/lyq napS.r1meh,(P2=4:}twki][5R{)é6050j0B0L0u0O0p0b0s0i0p0u0b0b0H010L0O0v010406050b0k0A0A0u0y0q040w0e0p0k0;0e0t0s020u0A0v0g0s0S0B0~0y0r0k0B0b050o0{0}0 110_0v041p1w051z0o1z1B1w0_0j0O0m0)0+0-0/0C0O0n0C0p1P0C0L0@050!0h0p0B1K0,0.011O1Q1S1Q0L1Y1!1W0L0h0e0j111X0y1x0L0C0)140b0v0u0t0/0G011$1M010l0$0B0t1c0B1W2123281(2b1!2e0A2g040a0s0F0y0e0v0e0b0O17190Y1 0y0y0B0i2B1p2i0t1x0o1}2N0L1{1`1|0j2k0/1S0t2d2y1W1H1J0*1%2X0O2Z0t1@1I1W0v2G1x2L2N2^0`22192)292.0y0~0p0@0z2K2|0^2{2j2~1(30320@0G3623382L2W013d0u33040c3h2M0_3k3b0/3n3p0I3s3j2|3l3y0@0R3B3u3D3w3m0e313o0@0W3B1y2?1p2%2Q0j2U3l0i1@2q0X1I1x2=0B2@373S3#0Y3-3a1L1(0N0@0Y0l3S3v3@0/0M0@0s3}3K3 3m0l0@2m2R0B0f2G0n0O18443?2*010?040E4i2}460t0@230t0k0#2G4p3l4m0D3B433~4k4s044e4g0t4z3L4m0U0J3I0s4S4E454G0@2G0{0p0!0L4D394q4k0e0@0H4%4F294m0T0K4R4T4(3l3_040l3N4.4V2 0@0v0B0y0b182Z4M464B4 4j51044v2p2v5c4)290e41042,5j3E4t0t4v4x0B594*0@0x5x5e2A1i1o1q3.4/1(4m0E4P4@4T4^5I0/4{0O3|5G3i4U5d3c0@5g540e5B5J0@0Q5(0/0A0O345,4l0@0P5q3L4+040H4-5V2M5X5k5Z4I0B4f4h5~3=610/4m5+674_3L5.5:6d5Q5=040P4Q67065O6q5P50624Y0k4!0u4$6i6t6a5*5;4H5355575w6A5Y6C6l5^465`5}2^605r5f0|5$5N6T3L4{2G0L0k0y4L676Z4r4X1n6w4#3I1p3:3,3T6^0o3W1p0L3Y6}2S2O1?1^2Q0u1Z6`3W1v683l2G0A0f0l0u0N4c0C0c0@1h1j1l1n0s6n2`1C381w0d1953160s0u0k0-0O0s2=0e0i0V0Y0y0s2d1 0t0b2R0k0O0b230L0s0k2C0O2I4K2e0O2G7N2}0e1d0y0V0C2d2z187N7X056@044u4w7)0B0x5D0A0b5L6?3$040s1l7F2G0t0m0e0O1#1!0(3#0k0v8i437{0E0*0V0D0s0m3o0B6(0U863;0s0j0k8C7#2B7(7*6n1F3(2(461*1R1T1V7b3L2m2d2f0@2s0w0i0y0=7X0F0q1}662`3+682_3.7{6e464{3{5;5n436K6947490$4b4d644K5;5K6E5s5u7 960@4C6+8?4W63656*2`6j4O7s376p6s6L016#0Z6(9k376,4k4;98046G565t6J9l6B6k9o5W9g5e5#5i9f6j4{4}0y6O9A0@4o8}6U9E6I9c049e6S9N629P5%9!4N0@8z9R9J5m0@5p9@9s4H7}5v5;5`5A9:6-5o0L5E9(859|8~5S5U9+6j4H9.9(6c9I9s6g0435a49X6Nab3l6Q6R9y9,3x6.9jaj5;anapal8~4m0P4?6o8A6`8.3V3)0_6{0Z0#0%04.