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

.128013nimwOgyk2P;oC, 5à}]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050U0H0z0w0c0x0B0p0G0x0w0B0B0R010z0c0W010406050B0u0d0d0w0D0h040Q0m0x0u0=0m0b0p020w0d0W0l0p0v0H0 0D0V0u0H0B050A0|0~10120`0W041q1x051A0A1A1C1x0`0U0c0F0*0,0.0:0M0c0g0M0x1Q0M0z0^050#0C0x0H1L0-0/011P1R1T1R0z1Z1#1X0z0C0m0U121Y0D1y0z0M0*150B0W0w0b0:0j011%1N010L0%0H0b1d0H1X2224291)2c1#2f0d2h040a0p0k0D0m0W0m0B0c181a0Z200D0D0H0G2C1q2j0b1y0A1~2O0z1|1{1}0U2l0:1T0b2e2z1X1I1K0+1(2Y0c2!0b1^1J1X0W2H1y2M2O2_0{231a2*2a2/0D0 0x0^0P2L2}0_2|2k2 1)31330^0j3724392M2X013e0w34040J3i2N0`3l3c0:3o3q0y3t3k2}3m3z0^0q3C1z2@1q2(2R0U2V3m0G1^2r0Y1J1y2?0H2^383J3S0Z3!3b1M1)0i0^0Z0L3J3w3+0:0e0^0p3;3E3x3n0L0^2n2S0H0T2/0d3{3*2+010@040X472~3?3n0^240b0u0$2H4e3m4b0o3C3`3=490b0^454o3}4b0K0O3C060p4G4t3|4g3-040c3:1r384I48304x0m464P3j4R4f490m3^4M0b4s3a4!4T044j4l0c4n4X2N4+4p0^4D4?0_4H4~4Z3m4L2H0z0u0D4)4|504A0^0N4z4g4w044y4|4^5a044{2_595e4i0b4k4m0H5d494b0E5v4-5h2{4u2a4b0t0s4E4~5j4K0^0H0(5u5i5D1)4b5m384F4 4G5K49520!55575n5Z5E5b5H4|0`0A3%3Z3K5=0A3N1q0z3P5`2T2P1@1_2R0w1!5@3N1w3)4,1)2H0d0T0L0w0i430M0J0^1i1k1m1o0p5U3j1z391x0n0!0z1$0w0W2y0G0M1$1o0z0p0S1m1J3p2e6x0p0r0*5N1#200b2A0B0#0b6G6P6e4;1$0u1a230D3S550)0!0p6(1$0B0m0D0=6y6Y0c0G0?0S0H0I0p0f1a170%0c0B1$055;4.5r4:2H0I2B1j0B0X0K1q7b0p6J0p2H0b0F0m0c1$1#0)6,0W7x3`7b0X0+0S0o0p0F6L557l5:3T040p0U0u7Q6|2C2f6$0I6s1H1J3m1+1S1U1W683m2n2e2g0^2t0Q0G0D0?6G0k0h1~193J3Y682`3#7b5*3,3.0H4O5C4J494%3`5Q8a303 04412H444V5z5S0^4d8e4S3d5q5s6$8n0:4q4*5R3y4U4W898s8y0^4C5I4H840:4L0L6@8A8f8o4c8x4h040W0H0D6?5r5P8F698H044r588M8W4k2q2w8V4B8R8G014$0^2-8^8)8W4/5t8V0m0^7Y8r8 5f7h0d1p974_4c8J5.5X5Y8B014L4N8~3F0^8Y8!192!9o3}94040R0R9v5p5g8m9d5k6q3u9i4 8.5#54569B5w5b8V5f9r8#9u9F4g5T9P5A0}8Z0m8?0^5-2_5W9j8S8N0^535%9!8T0N9+5V7m7O5?2O661B04730p8Y170p0w0u0.0ca42w0G0S0Z0D0p2e6T6W0D0u77246G6(7T2J0c9t5tai2~4V2?0S6D6Uau1a4{1G3V2)4g7%1-1V2i9/2b2d2p2r7;7?7^2u7{0M7}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

.128013nimwOgyk2P;oC, 5à}]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050U0H0z0w0c0x0B0p0G0x0w0B0B0R010z0c0W010406050B0u0d0d0w0D0h040Q0m0x0u0=0m0b0p020w0d0W0l0p0v0H0 0D0V0u0H0B050A0|0~10120`0W041q1x051A0A1A1C1x0`0U0c0F0*0,0.0:0M0c0g0M0x1Q0M0z0^050#0C0x0H1L0-0/011P1R1T1R0z1Z1#1X0z0C0m0U121Y0D1y0z0M0*150B0W0w0b0:0j011%1N010L0%0H0b1d0H1X2224291)2c1#2f0d2h040a0p0k0D0m0W0m0B0c181a0Z200D0D0H0G2C1q2j0b1y0A1~2O0z1|1{1}0U2l0:1T0b2e2z1X1I1K0+1(2Y0c2!0b1^1J1X0W2H1y2M2O2_0{231a2*2a2/0D0 0x0^0P2L2}0_2|2k2 1)31330^0j3724392M2X013e0w34040J3i2N0`3l3c0:3o3q0y3t3k2}3m3z0^0q3C1z2@1q2(2R0U2V3m0G1^2r0Y1J1y2?0H2^383J3S0Z3!3b1M1)0i0^0Z0L3J3w3+0:0e0^0p3;3E3x3n0L0^2n2S0H0T2/0d3{3*2+010@040X472~3?3n0^240b0u0$2H4e3m4b0o3C3`3=490b0^454o3}4b0K0O3C060p4G4t3|4g3-040c3:1r384I48304x0m464P3j4R4f490m3^4M0b4s3a4!4T044j4l0c4n4X2N4+4p0^4D4?0_4H4~4Z3m4L2H0z0u0D4)4|504A0^0N4z4g4w044y4|4^5a044{2_595e4i0b4k4m0H5d494b0E5v4-5h2{4u2a4b0t0s4E4~5j4K0^0H0(5u5i5D1)4b5m384F4 4G5K49520!55575n5Z5E5b5H4|0`0A3%3Z3K5=0A3N1q0z3P5`2T2P1@1_2R0w1!5@3N1w3)4,1)2H0d0T0L0w0i430M0J0^1i1k1m1o0p5U3j1z391x0n0!0z1$0w0W2y0G0M1$1o0z0p0S1m1J3p2e6x0p0r0*5N1#200b2A0B0#0b6G6P6e4;1$0u1a230D3S550)0!0p6(1$0B0m0D0=6y6Y0c0G0?0S0H0I0p0f1a170%0c0B1$055;4.5r4:2H0I2B1j0B0X0K1q7b0p6J0p2H0b0F0m0c1$1#0)6,0W7x3`7b0X0+0S0o0p0F6L557l5:3T040p0U0u7Q6|2C2f6$0I6s1H1J3m1+1S1U1W683m2n2e2g0^2t0Q0G0D0?6G0k0h1~193J3Y682`3#7b5*3,3.0H4O5C4J494%3`5Q8a303 04412H444V5z5S0^4d8e4S3d5q5s6$8n0:4q4*5R3y4U4W898s8y0^4C5I4H840:4L0L6@8A8f8o4c8x4h040W0H0D6?5r5P8F698H044r588M8W4k2q2w8V4B8R8G014$0^2-8^8)8W4/5t8V0m0^7Y8r8 5f7h0d1p974_4c8J5.5X5Y8B014L4N8~3F0^8Y8!192!9o3}94040R0R9v5p5g8m9d5k6q3u9i4 8.5#54569B5w5b8V5f9r8#9u9F4g5T9P5A0}8Z0m8?0^5-2_5W9j8S8N0^535%9!8T0N9+5V7m7O5?2O661B04730p8Y170p0w0u0.0ca42w0G0S0Z0D0p2e6T6W0D0u77246G6(7T2J0c9t5tai2~4V2?0S6D6Uau1a4{1G3V2)4g7%1-1V2i9/2b2d2p2r7;7?7^2u7{0M7}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

.128013nimwOgyk02P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050U0H0z0w0c0x0B0p0G0x0w0B0B0R010z0c0W010406050B0u0d0d0w0D0h040Q0n0x0u0=0n0b0p020w0d0W0m0p0v0H0 0D0V0u0H0B050A0|0~10120`0W041q1x051A0A1A1C1x0`0U0c0F0*0,0.0:0M0c0g0M0x1Q0M0z0^050#0C0x0H1L0-0/011P1R1T1R0z1Z1#1X0z0C0n0U121Y0D1y0z0M0*150B0W0w0b0:0k011%1N010L0%0H0b1d0H1X2224291)2c1#2f0d2h040a0p0l0D0n0W0n0B0c181a0Z200D0D0H0G2C1q2j0b1y0A1~2O0z1|1{1}0U2l0:1T0b2e2z1X1I1K0+1(2Y0c2!0b1^1J1X0W2H1y2M2O2_0{231a2*2a2/0D0 0x0^0P2L2}0_2|2k2 1)31330^0k3724392M2X013e0w34040J3i2N0`3l3c0:3o3q0y3t3k2}3m3z0^0q3C3v3E3x3n0n323p0^0s3C1z2@1q2(2R0U2V3m0G1^2r0Y1J1y2?0H2^383T3$0Z3.3b1M1)0i0^0Z0L3T3w3^0:0e0^0p3~3L403n0L0^2n2S0H0T2-2B0c3p0H453@2+010@040X4k2~470b0^240b0u0$2H4r3m4o0o3C443 4m4u044f0=4i4B3M4o0K0O3J0p4U4G464I0^2H0|0x0#0z4F3a4s4m0n0^0R4)4H2a4o0N0r4T4V4*3m3`040L3O4:4X300^0W0H0D0B192!514l2a0n424K0b5b4+53044w4y0c4A1r3/4;1)4o4S5q3j064V5z4W5c3_0^0c3}5w2N5B5j3d5456580b5a5H3?5K0:4o0E4O470d0c0^0j5X4m4o0t5i3m4-040R4/5R5J3F5E0b4g4N5R4{4P0^5v2_5y5A625|4t4Z1o0u4$0w4(5{5s5U0^5W6c525L045557594j6h5C6e045*5;644,4.5+3M4J5m4z6o2{6d4n6f5%5k6l5O5Q6E6i6r6t605z6v2a4}2H0z0u0D5h6u6F4J4!684%3J1q3;3-3U6.0A3X1q0z3Z6?2T2P1@1_2R0w1!6:3X1w5S3m2H0d0T0L0w0i4d0M0J0^1i1k1m1o0p5 3/1D391x0f1a55170p0w0u0.0c0p2?0n0G0S0Z0D0p2e200b0B2S0u0c0B240z0p0u2D0c2J0c596C7G2~0n1e0D0S0M2e2A197G7Q056-5l5P5n2H0I2B1j0B0X0K6,3%040p1m7y2H0b0F0n0c1$1#0)3$0u0W8a447:0X0+0S0o0p0F4i6Y7}0A7:0p0U0u8t7U2C2f5o1$5v1G3)2)471+1S1U1W743M2n2e2g0^2t0Q0G0D0?7Q0l0h1~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=9j0N984J6K6n985u6y65044x2q2w9E4m4}4 0D9K4=0^926N6q9e6k5N9B9i474D9P6j9H560n9C0^8q9u9o015e5@9$3y4v7=979Z6w040I9y5E0z7`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

.128013nimwOgyk02P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050U0H0z0w0c0x0B0p0G0x0w0B0B0R010z0c0W010406050B0u0d0d0w0D0h040Q0n0x0u0=0n0b0p020w0d0W0m0p0v0H0 0D0V0u0H0B050A0|0~10120`0W041q1x051A0A1A1C1x0`0U0c0F0*0,0.0:0M0c0g0M0x1Q0M0z0^050#0C0x0H1L0-0/011P1R1T1R0z1Z1#1X0z0C0n0U121Y0D1y0z0M0*150B0W0w0b0:0k011%1N010L0%0H0b1d0H1X2224291)2c1#2f0d2h040a0p0l0D0n0W0n0B0c181a0Z200D0D0H0G2C1q2j0b1y0A1~2O0z1|1{1}0U2l0:1T0b2e2z1X1I1K0+1(2Y0c2!0b1^1J1X0W2H1y2M2O2_0{231a2*2a2/0D0 0x0^0P2L2}0_2|2k2 1)31330^0k3724392M2X013e0w34040J3i2N0`3l3c0:3o3q0y3t3k2}3m3z0^0q3C3v3E3x3n0n323p0^0s3C1z2@1q2(2R0U2V3m0G1^2r0Y1J1y2?0H2^383T3$0Z3.3b1M1)0i0^0Z0L3T3w3^0:0e0^0p3~3L403n0L0^2n2S0H0T2-2B0c3p0H453@2+010@040X4k2~470b0^240b0u0$2H4r3m4o0o3C443 4m4u044f0=4i4B3M4o0K0O3J0p4U4G464I0^2H0|0x0#0z4F3a4s4m0n0^0R4)4H2a4o0N0r4T4V4*3m3`040L3O4:4X300^0W0H0D0B192!514l2a0n424K0b5b4+53044w4y0c4A1r3/4;1)4o4S5q3j064V5z4W5c3_0^0c3}5w2N5B5j3d5456580b5a5H3?5K0:4o0E4O470d0c0^0j5X4m4o0t5i3m4-040R4/5R5J3F5E0b4g4N5R4{4P0^5v2_5y5A625|4t4Z1o0u4$0w4(5{5s5U0^5W6c525L045557594j6h5C6e045*5;644,4.5+3M4J5m4z6o2{6d4n6f5%5k6l5O5Q6E6i6r6t605z6v2a4}2H0z0u0D5h6u6F4J4!684%3J1q3;3-3U6.0A3X1q0z3Z6?2T2P1@1_2R0w1!6:3X1w5S3m2H0d0T0L0w0i4d0M0J0^1i1k1m1o0p5 3/1D391x0f1a55170p0w0u0.0c0p2?0n0G0S0Z0D0p2e200b0B2S0u0c0B240z0p0u2D0c2J0c596C7G2~0n1e0D0S0M2e2A197G7Q056-5l5P5n2H0I2B1j0B0X0K6,3%040p1m7y2H0b0F0n0c1$1#0)3$0u0W8a447:0X0+0S0o0p0F4i6Y7}0A7:0p0U0u8t7U2C2f5o1$5v1G3)2)471+1S1U1W743M2n2e2g0^2t0Q0G0D0?7Q0l0h1~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=9j0N984J6K6n985u6y65044x2q2w9E4m4}4 0D9K4=0^926N6q9e6k5N9B9i474D9P6j9H560n9C0^8q9u9o015e5@9$3y4v7=979Z6w040I9y5E0z7`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

.128013nimwOgyk2P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050T0G0y0v0c0w0A0o0F0w0v0A0A0Q010y0c0V010406050A0t0d0d0v0C0h040P0m0w0t0;0m0b0o020v0d0V0l0o0u0G0~0C0U0t0G0A050z0{0}0 110_0V041p1w051z0z1z1B1w0_0T0c0E0)0+0-0/0L0c0g0L0w1P0L0y0@050!0B0w0G1K0,0.011O1Q1S1Q0y1Y1!1W0y0B0m0T111X0C1x0y0L0)140A0V0v0b0/0j011$1M010K0$0G0b1c0G1W2123281(2b1!2e0d2g040a0o0k0C0m0V0m0A0c17190Y1 0C0C0G0F2B1p2i0b1x0z1}2N0y1{1`1|0T2k0/1S0b2d2y1W1H1J0*1%2X0c2Z0b1@1I1W0V2G1x2L2N2^0`22192)292.0C0~0w0@0O2K2|0^2{2j2~1(30320@0j3623382L2W013d0v33040I3h2M0_3k3b0/3n3p0x3s3j2|3l3y0@0p3B3u3D3w3m0m313o0@0r3B1y2?1p2%2Q0T2U3l0F1@2q0X1I1x2=0G2@373S3#0Y3-3a1L1(0i0@0Y0K3S3v3@0/0e0@0o3}3K3 3m0K0@2m2R0G0S2,0E0G0C0A0G443?2*010?040W4k2}460b0@230b0t0#2G4r3l4o0n3B433~4m4u044x0d4B3L4o0J0N3I0o4T4G454I0@2G0{0w0!0y4F394s4m0m0@0Q4(4H294o0M0q4S4U4)3l3_040K3N4/4W2 0@0V4g0A182Z4N464D504l524K0|4g0m5c4*290m41042,5j3E4v0b4x4z4j1q3.4:1(4,040H594X5o0y1i1o5x3i4`4O0@0W4Q4^4U4_5z0/4|0c3|5K2M4V5d3c0@4L5h5q3L5B0Q4.5Z045#5k5%5f4M5:5M5a0@4R5:065S615T515@4Z0t4#0v4%5`5U4n0@0D5E5e544h575w2`6c4o0s5+465-6q5F5)2v5R5=4{4Y0Z0t0C0b6t5e66686a2^0_0z3:3,3T6O0z3W1p0y3Y6T2S2O1?1^2Q0v1Z6Q3W1v3=5?0/2G0d0S0K0v0i4c0L0I0@1h1j1l1n0o5~2`1C381w0f1954160o0v0t0-0c0o2=0m0F0R0Y0C0o2d1 0b0A2R0t0c0A230y0o0t2C0c2I0c575v7l2}0m1d0C0R0L2d2z187l7v056N044w4y0c2G0H2A5I5P1p7R0o1l7d2G0b0E0m0c1#1!0(3#0t0V7:437R0W0*0R0n0o0E3o0G6C0J7#3$5;0T0t0o1H7A7C7V1#5~1F3(2(461*1R1T1V6+3l2m2d2f0@2s0P0F0C0=7v0k0h1}183S3+6+2_3.7R5{4m4|3{6g1(5n436b643x484}0$4b4d7+556l5y8U6d4p8P3x5s5u8e8,8*4E5:6y3L4J4L8;4P703760635$5V6A0y6C6E8@8L4;0@0M8;4J6i565t8%5L6n5}6F5@6v5i986c4|4~0C9m0/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

.128013nimwOgyk2P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050T0G0y0v0c0w0A0o0F0w0v0A0A0Q010y0c0V010406050A0t0d0d0v0C0h040P0m0w0t0;0m0b0o020v0d0V0l0o0u0G0~0C0U0t0G0A050z0{0}0 110_0V041p1w051z0z1z1B1w0_0T0c0E0)0+0-0/0L0c0g0L0w1P0L0y0@050!0B0w0G1K0,0.011O1Q1S1Q0y1Y1!1W0y0B0m0T111X0C1x0y0L0)140A0V0v0b0/0j011$1M010K0$0G0b1c0G1W2123281(2b1!2e0d2g040a0o0k0C0m0V0m0A0c17190Y1 0C0C0G0F2B1p2i0b1x0z1}2N0y1{1`1|0T2k0/1S0b2d2y1W1H1J0*1%2X0c2Z0b1@1I1W0V2G1x2L2N2^0`22192)292.0C0~0w0@0O2K2|0^2{2j2~1(30320@0j3623382L2W013d0v33040I3h2M0_3k3b0/3n3p0x3s3j2|3l3y0@0p3B3u3D3w3m0m313o0@0r3B1y2?1p2%2Q0T2U3l0F1@2q0X1I1x2=0G2@373S3#0Y3-3a1L1(0i0@0Y0K3S3v3@0/0e0@0o3}3K3 3m0K0@2m2R0G0S2,0E0G0C0A0G443?2*010?040W4k2}460b0@230b0t0#2G4r3l4o0n3B433~4m4u044x0d4B3L4o0J0N3I0o4T4G454I0@2G0{0w0!0y4F394s4m0m0@0Q4(4H294o0M0q4S4U4)3l3_040K3N4/4W2 0@0V4g0A182Z4N464D504l524K0|4g0m5c4*290m41042,5j3E4v0b4x4z4j1q3.4:1(4,040H594X5o0y1i1o5x3i4`4O0@0W4Q4^4U4_5z0/4|0c3|5K2M4V5d3c0@4L5h5q3L5B0Q4.5Z045#5k5%5f4M5:5M5a0@4R5:065S615T515@4Z0t4#0v4%5`5U4n0@0D5E5e544h575w2`6c4o0s5+465-6q5F5)2v5R5=4{4Y0Z0t0C0b6t5e66686a2^0_0z3:3,3T6O0z3W1p0y3Y6T2S2O1?1^2Q0v1Z6Q3W1v3=5?0/2G0d0S0K0v0i4c0L0I0@1h1j1l1n0o5~2`1C381w0f1954160o0v0t0-0c0o2=0m0F0R0Y0C0o2d1 0b0A2R0t0c0A230y0o0t2C0c2I0c575v7l2}0m1d0C0R0L2d2z187l7v056N044w4y0c2G0H2A5I5P1p7R0o1l7d2G0b0E0m0c1#1!0(3#0t0V7:437R0W0*0R0n0o0E3o0G6C0J7#3$5;0T0t0o1H7A7C7V1#5~1F3(2(461*1R1T1V6+3l2m2d2f0@2s0P0F0C0=7v0k0h1}183S3+6+2_3.7R5{4m4|3{6g1(5n436b643x484}0$4b4d7+556l5y8U6d4p8P3x5s5u8e8,8*4E5:6y3L4J4L8;4P703760635$5V6A0y6C6E8@8L4;0@0M8;4J6i565t8%5L6n5}6F5@6v5i986c4|4~0C9m0/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

.128013nimwOgyk2P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050T0G0y0v0c0w0A0o0F0w0v0A0A0Q010y0c0V010406050A0t0d0d0v0C0h040P0m0w0t0;0m0b0o020v0d0V0l0o0u0G0~0C0U0t0G0A050z0{0}0 110_0V041p1w051z0z1z1B1w0_0T0c0E0)0+0-0/0L0c0g0L0w1P0L0y0@050!0B0w0G1K0,0.011O1Q1S1Q0y1Y1!1W0y0B0m0T111X0C1x0y0L0)140A0V0v0b0/0j011$1M010K0$0G0b1c0G1W2123281(2b1!2e0d2g040a0o0k0C0m0V0m0A0c17190Y1 0C0C0G0F2B1p2i0b1x0z1}2N0y1{1`1|0T2k0/1S0b2d2y1W1H1J0*1%2X0c2Z0b1@1I1W0V2G1x2L2N2^0`22192)292.0C0~0w0@0O2K2|0^2{2j2~1(30320@0j3623382L2W013d0v33040I3h2M0_3k3b0/3n3p0x3s3j2|3l3y0@0p3B3u3D3w3m0m313o0@0r3B1y2?1p2%2Q0T2U3l0F1@2q0X1I1x2=0G2@373S3#0Y3-3a1L1(0i0@0Y0K3S3v3@0/0e0@0o3}3K3 3m0K0@2m2R0G0S2G0g0c18443?2*010?040W4i2}460b0@230b0t0#2G4p3l4m0n3B433~4k4s044e4g0b4z3L4m0J0N3I0o4S4E454G0@2G0{0w0!0y4D394q4k0m0@0Q4%4F294m0M0q4R4T4(3l3_040K3N4.4V2 0@0V0G0C0A182Z4M464B4 4j51044v2p2v5c4)290m41042,5j3E4t0b4v4x0G594*0@0H5x5e2A1i1o1q3.4/1(4m0W4P4@4T4^5I0/4{0c3|5G3i4U5d3c0@5g540m5B5J0@0D5(0/0d0c345,4l0@0s5q3L4+040Q4-5V2M5X5k5Z4I0G4f4h5~3=610/4m5+674_3L5.5:6d5Q5=040s4Q67065O6q5P50624Y0t4!0v4$6i6t6a5*5;4H5355575w6A5Y6C6l5^465`5}2^605r5f0|5$5N6T3L4{2G0y0t0C4L676Z4r4X1n6w4#3I1p3:3,3T6^0z3W1p0y3Y6}2S2O1?1^2Q0v1Z6`3W1v683l2G0d0S0K0v0i4c0L0I0@1h1j1l1n0o6n2`1C381w0f1953160o0v0t0-0c0o2=0m0F0R0Y0C0o2d1 0b0A2R0t0c0A230y0o0t2C0c2I4K2e0c2G7N2}0m1d0C0R0L2d2z187N7X056@044u4w7)0G0H5D0d0A5L6?3$040o1l7F2G0b0E0m0c1#1!0(3#0t0V8i437{0W0*0R0n0o0E3o0G6(0J863;0o0T0t8C7#2B7(7*6n1F3(2(461*1R1T1V7b3L2m2d2f0@2s0P0F0C0=7X0k0h1}662`3+682_3.7{6e464{3{5;5n436K6947490$4b4d644K5;5K6E5s5u7 960@4C6+8?4W63656*2`6j4O7s376p6s6L016#0Z6(9k376,4k4;98046G565t6J9l6B6k9o5W9g5e5#5i9f6j4{4}0C6O9A0@4o8}6U9E6I9c049e6S9N629P5%9!4N0@8z9R9J5m0@5p9@9s4H7}5v5;5`5A9:6-5o0y5E9(859|8~5S5U9+6j4H9.9(6c9I9s6g0435a49X6Nab3l6Q6R9y9,3x6.9jaj5;anapal8~4m0s4?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

.128013nimwOgyk2P;o, 5}6]uRal4t/sbr[vce.3)fh{:1S=é_dqp(050T0G0y0v0c0w0A0o0F0w0v0A0A0Q010y0c0V010406050A0t0d0d0v0C0h040P0m0w0t0;0m0b0o020v0d0V0l0o0u0G0~0C0U0t0G0A050z0{0}0 110_0V041p1w051z0z1z1B1w0_0T0c0E0)0+0-0/0L0c0g0L0w1P0L0y0@050!0B0w0G1K0,0.011O1Q1S1Q0y1Y1!1W0y0B0m0T111X0C1x0y0L0)140A0V0v0b0/0j011$1M010K0$0G0b1c0G1W2123281(2b1!2e0d2g040a0o0k0C0m0V0m0A0c17190Y1 0C0C0G0F2B1p2i0b1x0z1}2N0y1{1`1|0T2k0/1S0b2d2y1W1H1J0*1%2X0c2Z0b1@1I1W0V2G1x2L2N2^0`22192)292.0C0~0w0@0O2K2|0^2{2j2~1(30320@0j3623382L2W013d0v33040I3h2M0_3k3b0/3n3p0x3s3j2|3l3y0@0p3B3u3D3w3m0m313o0@0r3B1y2?1p2%2Q0T2U3l0F1@2q0X1I1x2=0G2@373S3#0Y3-3a1L1(0i0@0Y0K3S3v3@0/0e0@0o3}3K3 3m0K0@2m2R0G0S2G0g0c18443?2*010?040W4i2}460b0@230b0t0#2G4p3l4m0n3B433~4k4s044e4g0b4z3L4m0J0N3I0o4S4E454G0@2G0{0w0!0y4D394q4k0m0@0Q4%4F294m0M0q4R4T4(3l3_040K3N4.4V2 0@0V0G0C0A182Z4M464B4 4j51044v2p2v5c4)290m41042,5j3E4t0b4v4x0G594*0@0H5x5e2A1i1o1q3.4/1(4m0W4P4@4T4^5I0/4{0c3|5G3i4U5d3c0@5g540m5B5J0@0D5(0/0d0c345,4l0@0s5q3L4+040Q4-5V2M5X5k5Z4I0G4f4h5~3=610/4m5+674_3L5.5:6d5Q5=040s4Q67065O6q5P50624Y0t4!0v4$6i6t6a5*5;4H5355575w6A5Y6C6l5^465`5}2^605r5f0|5$5N6T3L4{2G0y0t0C4L676Z4r4X1n6w4#3I1p3:3,3T6^0z3W1p0y3Y6}2S2O1?1^2Q0v1Z6`3W1v683l2G0d0S0K0v0i4c0L0I0@1h1j1l1n0o6n2`1C381w0f1953160o0v0t0-0c0o2=0m0F0R0Y0C0o2d1 0b0A2R0t0c0A230y0o0t2C0c2I4K2e0c2G7N2}0m1d0C0R0L2d2z187N7X056@044u4w7)0G0H5D0d0A5L6?3$040o1l7F2G0b0E0m0c1#1!0(3#0t0V8i437{0W0*0R0n0o0E3o0G6(0J863;0o0T0t8C7#2B7(7*6n1F3(2(461*1R1T1V7b3L2m2d2f0@2s0P0F0C0=7X0k0h1}662`3+682_3.7{6e464{3{5;5n436K6947490$4b4d644K5;5K6E5s5u7 960@4C6+8?4W63656*2`6j4O7s376p6s6L016#0Z6(9k376,4k4;98046G565t6J9l6B6k9o5W9g5e5#5i9f6j4{4}0C6O9A0@4o8}6U9E6I9c049e6S9N629P5%9!4N0@8z9R9J5m0@5p9@9s4H7}5v5;5`5A9:6-5o0y5E9(859|8~5S5U9+6j4H9.9(6c9I9s6g0435a49X6Nab3l6Q6R9y9,3x6.9jaj5;anapal8~4m0s4?6o8A6`8.3V3)0_6{0Z0#0%04.