Exercices Projets guidés Contact 10 : Statistiques du carnet
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Contact 10 : Statistiques du carnet

Pour finir notre gestionnaire, on construit un tableau de bord statistique. C'est exactement ce que fait un admin Django ou un dashboard analytics : agréger les données pour donner une vue d'ensemble. Cet exercice combine tout ce que tu as appris : boucles, dictionnaires, compteurs, extraction de sous-chaînes.

Écris une fonction statistiques(contacts) qui retourne un dictionnaire avec :
total : nombre total de contacts
villes : un dictionnaire {ville: nombre}
ville_principale : la ville avec le plus de contacts (ou None si vide)
domaines_email : un dictionnaire {domaine: nombre} (la partie après @)

Exemple :
statistiques([{"nom": "Alice", "email": "alice@gmail.com", "ville": "Paris", ...}])
renvoie {"total": 1, "villes": {"Paris": 1}, "ville_principale": "Paris", "domaines_email": {"gmail.com": 1}}

Tests (2/4)

Stats completes
contacts = [
    {'nom': 'Alice', 'email': 'alice@gmail.com', 'telephone': '1', 'ville': 'Paris'},
    {'nom': 'Bob', 'email': 'bob@gmail.com', 'telephone': '2', 'ville': 'Lyon'},
    {'nom': 'Charlie', 'email': 'charlie@yahoo.fr', 'telephone': '3', 'ville': 'Paris'},
    {'nom': 'Diane', 'email': 'diane@yahoo.fr', 'telephone': '4', 'ville': 'Nice'},
]
r = statistiques(contacts)
assert r['total'] == 4
assert r['villes']['Paris'] == 2
assert r['ville_principale'] == 'Paris'
assert r['domaines_email']['gmail.com'] == 2
assert r['domaines_email']['yahoo.fr'] == 2
Liste vide
r = statistiques([])
assert r['total'] == 0
assert r['ville_principale'] is None

+ 0 tests cachés

Indices (3 disponibles)

solution.py