Gestionnaire de contacts intelligent
Fait partie de la section Logique et flux du Journey Python de Coddy. Leçon 76 sur 78.
Défi
MoyenCréez une fonction nommée organize_contacts qui traite une liste de dictionnaires de contacts pour créer une base de données de contacts propre.
Chaque dictionnaire de contact de la liste d'entrée possède les clés suivantes :
name: le nom de la personneemail: l'adresse e-mail de la personnephone: le numéro de téléphone de la personne
Votre fonction doit :
- Supprimer les contacts en double (les contacts ayant la même adresse e-mail ou le même numéro de téléphone), en conservant la première occurrence
- Convertir toutes les adresses e-mail en minuscules
- Écarter les contacts ayant des adresses e-mail invalides
- Écarter les contacts ayant des numéros de téléphone invalides
- Renvoyer une liste de dictionnaires de contacts nettoyés
Règles de validation :
- Adresse e-mail valide : doit contenir « @ » et « . », et ne doit pas contenir d'espaces
- Numéro de téléphone valide : doit contenir exactement 10 chiffres (ignorez les caractères non numériques comme les tirets ou les parenthèses)
Pour nettoyer les numéros de téléphone, vous devez utiliser la méthode str.isdigit() de Python afin d'extraire uniquement les chiffres des numéros de téléphone. Cette méthode renvoie True si un caractère est un chiffre (0-9) et False dans le cas contraire ; elle est donc idéale pour filtrer les caractères non numériques.
Exemple d'entrée :
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Résultat attendu :
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Essayez vous-même
def organize_contacts(contact_list):
# Votre solution ici
# 1. Créez des fonctions auxiliaires pour la validation
# - Fonction pour valider le format des adresses e-mail
# - Fonction pour nettoyer et valider les numéros de téléphone
# 2. Traitez chaque contact
# - Nettoyez l’adresse e-mail (en minuscules) et le numéro de téléphone (chiffres uniquement)
# - Vérifiez que l’adresse e-mail et le numéro de téléphone sont valides
# - Vérifiez s’il y a des doublons
# 3. Renvoyez la liste des contacts nettoyée
passToutes les leçons de Logique et flux
1Exploration des variables
ConstantesAffectations multiples de variablesÉchange de variablesVariables de remplacementArrondir les nombresConversion en liste4Application de carnet de contacts
Afficher le menuAjouter un contact7Ensembles, partie 2
Opérations mathématiques, partie 1Opérations mathématiques, partie 2Révision - Chasse au trésorSous-ensembles et sur-ensemblesParcourir les ensemblesRévision - Suivi du tournoi10Compréhensions de liste de base
La syntaxeCréer des listes simplesAjouter des conditionsUtiliser l’agrégation de donnéesRécapitulatif - La maison des listesRécapitulatif - Les éléments de la liberté13Système de gestion des stocks
Présentation du projetAjouter un article2Dictionnaires, partie 1
Qu’est-ce qu’un dictionnaire ?Créer un dictionnaireAccéder aux valeursModifier des dictionnairesRécapitulatif – Gestionnaire de recettes5Prise de décision avancée
Opérateur ternaireVérifier l’appartenanceVérifier l’identitéErreurs d’indentationRécapitulatif – Filtre de vacances8Gestionnaire des dossiers étudiants
Présentation du projetAjouter un étudiant11Fonctions avancées
Retourner plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Défi récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’une liste imbriquée14Fonctions d’ordre supérieur
La fonction mapLa fonction filterRécapitulatif - Validateur d’e-mailsRécapitulatif - Traitement de nombres3Dictionnaires, partie 2
Méthodes des dictionnairesDictionnaires imbriquésVérifier la présence de clésParcourir les dictionnairesRécapitulatif - Compteur de fréquences6Ensembles, partie 1
Qu’est-ce qu’un ensemble ?Opérations de baseMéthodes des ensemblesRécapitulatif - Supprimer les doublons9Agrégation avancée de données
Utiliser la sommeTrouver le minimum et le maximumTrier les données efficacementRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur Python en ligne