Gestionnaire de contacts intelligent
Fait partie de la section Logic & Flow 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 dans la liste d'entrée possède ces clés :
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 (contacts ayant la même adresse e-mail ou le même numéro de téléphone), en conservant la première occurrence
- Normaliser tous les e-mails en minuscules
- Filtrer les contacts ayant des adresses e-mail invalides
- Filtrer les contacts ayant des numéros de téléphone invalides
- Retourner une liste de dictionnaires de contacts nettoyés
Règles de validation :
- E-mail valide : Doit contenir '@' et '.', et ne doit pas comporter d'espaces
- 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 devriez utiliser la méthode str.isdigit() de Python pour extraire uniquement les chiffres numériques des numéros de téléphone. Cette méthode renvoie True si un caractère est un chiffre (0-9) et False sinon, ce qui la rend parfaite pour filtrer les caractères non numériques.
Exemple d'entrée :
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Sortie attendue :
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Essayez vous-même
def organize_contacts(contact_list):
# Votre solution ici
# 1. Créer des fonctions d'aide pour la validation
# - Fonction pour valider le format de l'e-mail
# - Fonction pour nettoyer et valider les numéros de téléphone
# 2. Traiter chaque contact
# - Nettoyer l'e-mail (minuscules) et le téléphone (chiffres uniquement)
# - Vérifier si l'e-mail et le téléphone sont valides
# - Vérifier les doublons
# 3. Retourner la liste de contacts propre
passToutes les leçons de Logic & Flow
1Exploration des variables
ConstantesAffectations multiplesÉchange de variablesVariables de substitutionArrondir des nombresCasting de listes4Application de carnet de contacts
Afficher le menuAjouter un contact7Ensembles Partie 2
Opérations mathématiques Partie 1Opérations mathématiques Partie 2Récapitulatif - Chasse au trésorSous-ensembles et sur-ensemblesItérer sur les ensemblesRécapitulatif - Suivi de tournoi10Compréhensions de listes basiques
La syntaxeCréer des listes simplesAjouter des conditionsUtiliser l'agrégation de donnéesRécapitulatif - House Of ListsRécapitulatif - Elements Of Freedom13Système de gestion des stocks
Présentation du projetAjouter un article2Les dictionnaires - 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érifications d'appartenanceVérifications d'identitéErreurs d'indentationRécapitulatif - Filtre de vacances8Gestionnaire de dossiers étudiants
Présentation du projetAjouter un étudiant11Fonctions avancées
Retourner plusieurs valeursFonctions Lambda - Partie 1Fonctions Lambda - Partie 2Défi récapitulatif - Tri 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 - Processeur de nombres3Dictionnaires - Partie 2
Méthodes de dictionnaireDictionnaires imbriquésVérification des clésParcourir les dictionnairesRécapitulatif - Compteur de fréquence6Les Ensembles - Partie 1
Qu'est-ce qu'un ensemble ?Opérations de baseMéthodes des ensemblesRécapitulatif - Supprimer les doublons9Agrégation de données avancée
Utilisation de SumTrouver le minimum et le maximumTrier les données efficacementRécapitulatif - Trieur de dictionnaires