Recherche d'un contact

Une personne trouve dans sa poche un numéro de téléphone sans le nom du contact associé.

Cette personne a pris soin d'enregistrer tous ses contacts dans un dictionnaire Python au format {nom_du_contact: numero}. nom_du_contact est une chaîne de caractères, numero un entier positif.

🐍 Script Python
contacts = {
    "Victor": 6618563,
    "Thelma": 2978634,
    "Tesnim": 1486372,
    "Louane": 3284298,
    "Moussa": 2978634,
}

Écrire la fonction proprietaire qui prend en argument un numéro de téléphone (numero) et le dictionnaire des contacts (contacts) et renvoie le nom d'un contact auquel ce numéro est associé.

Si aucun contact n'est associé à ce numéro, la fonction renverra None.

Si deux contacts ou plus sont associés à ce numéro, la fonction renverra indifféremment l'un d'entre eux.

Exemples
>>> contacts = {
...     "Victor": 6618563,
...     "Thelma": 2978634,
...     "Tesnim": 1486372,
...     "Louane": 3284298,
...     "Moussa": 2978634,
... }
>>> proprietaire(6618563, contacts)
'Victor'
>>> proprietaire(2978634, contacts)
'Moussa'
>>> proprietaire(5178530, contacts) is None
True
Dictionnaire et ordre

Depuis Python 3.7, les dictionnaires sont parcourus dans l'ordre d'insertion des clés. Rien n'est garanti pour les versions antérieures.

C'est pourquoi dans le cas présent, si deux contacts ou plus sont associés au même numéro, on demande de renvoyer indifféremment l'un d'entre eux.

###(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:Ntwki][5R)é050k0C0M0v0P0q0b0t0j0q0v0b0b0I010M0P0w010406050b0l0B0B0v0z0r040x0e0q0l0:0e0u0t020v0B0w0g0t0T0C0}0z0s0l0C0b050p0`0|0~100^0w041o1v051y0p1y1A1v0^0k0P0n0(0*0,0.0D0P0o0D0q1O0D0M0?050Z0i0q0C1J0+0-011N1P1R1P0M1X1Z1V0M0i0e0k101W0z1w0M0D0(130b0w0v0u0.0H011#1L010m0#0C0u1b0C1V2022271%2a1Z2d0B2f040a0t0G0z0e0w0e0b0P16180X1~0z0z0C0j2A1o2h0u1w0p1|2M0M1`1_1{0k2j0.1R0u2c2x1V1G1I0)1$2W0P2Y0u1?1H1V0w2F1w2K2M2@0_21182(282-0z0}0q0?0A2J2{0@2`2i2}1%2 310?0H3522372K2V013c0v32040c3g2L0^3j3a0.3m3o0J3r3i2{3k3x0?0S3A1x2=1o2$2P0k2T3k0j1?2p0W1H1w2;0C2?363H3Q0X3Y391K1%0O0?0X0m3H3u3)0.0N0?0t3/3C3v3l0m0?2;2v0z0P0Y0!2F3_3(2)010=040F462|3;3l0?0u0{0C2u4d3k4a0E3A3^3:480u0?3Q0u0Z2H1n1p3Z4s284a0U0K3A060t4K4r3`4f3+040m0e0z4q384e4t3~4k0b172Y4U4D1%0e3?042+4%4N4X044w4y0M4A2_4(0.4a4H4B3h4J4L514V3k4P0P3.4~2L4M472~4v174?4^4C4/4E0?0R4m3{4u040w4Z4#0C5m4f4a0Q4.5b4)0?0I0I5y4W5c044i2o4l583%5F1%4|4I515R4L533{4P2F0M0l0z0u5E3D4Y0z4!0u4$5L504K5U4O0?5X5Z5#5L5a5N0.0O0j0?0L175t5-1o3#3X3I660p3L1o0M3N6b2R2N1=1@2P0v1Y683L1u5M3k2F0B0f0m0v0O0C0f0D0c0?1g1i1k1m0t4}2_1B371v0d182w5Z0z0!0M0t0v0l0,0P0t150#0P0b4k0t0*0t0B0V1|3R3^653k1)1Q1S1U6p5n0i3,0P2H5u480e0?0y6 5G2z1h5g3h643R046G1x372$6;1S1+1T2g5i2k2b2n2p2r0x0j410w6S0G0r6-5^2_3W5M2^3Z656_5;043-741%4+3^5L5:4t3}5p2u2;420Z0P457P4`490?4c7!7m3w4h4j5K4_7*7$044p5_7Q5G4=0v4z7L4{0?4G5Q5T7#4P4R4T7@7#5o5q5)5s7}7;7?2@5`5%040M0C1Z0w0D615$3{4*0?4-877:5o7`7|7)5z0.7104738A5{4g4,8k0B782L7^5O7%805-5S5/838t578g8O7+8j8l0C8n8p8v8B018D5C8q4f5o5I4k0e8d5P8S8T528V045?5!8/4:8a5*5,2@5.8h5V5=0Y5@91285}5 8)967a3$672M6n1z04600M170%6U6W0t6E6(1!056:3{6=7j6^8Z015W9b908*8H9f9p9h3Z0p7G0t2c0t0X5!0P0h2F6(1O2Y0t0u001m6S210%2+1G202c0b6k1Z6G6Y9%4R0u2H0P172s7y8o182F0u0n0e426/6.9C7i6@7l8+9N60959Q9S210z9V0V6u158F1E3K430#0b04.