Gestore intelligente dei contatti
Fa parte della sezione Logica e flusso del percorso Python di Coddy. Lezione 76 di 78.
Sfida
MedioCrea una funzione denominata organize_contacts che elabori un elenco di dizionari di contatti per creare un database di contatti pulito.
Ogni dizionario di contatto nell’elenco di input ha queste chiavi:
name: Il nome della personaemail: L’indirizzo email della personaphone: Il numero di telefono della persona
La tua funzione dovrebbe:
- Rimuovere i contatti duplicati (contatti con la stessa email o lo stesso numero di telefono), mantenendo la prima occorrenza
- Convertire tutte le email in minuscolo
- Escludere i contatti con indirizzi email non validi
- Escludere i contatti con numeri di telefono non validi
- Restituire un elenco di dizionari di contatti ripuliti
Regole di convalida:
- Email valida: Deve contenere '@' e '.', e non deve contenere spazi
- Telefono valido: Deve contenere esattamente 10 cifre (ignora i caratteri non numerici come trattini o parentesi)
Per ripulire i numeri di telefono, dovresti usare il metodo str.isdigit() di Python per estrarre solo le cifre numeriche dai numeri di telefono. Questo metodo restituisce True se un carattere è una cifra (0-9) e False altrimenti, quindi è perfetto per filtrare i caratteri non numerici.
Esempio di input:
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Output previsto:
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Provalo tu
def organize_contacts(contact_list):
# La tua soluzione qui
# 1. Crea funzioni di supporto per la convalida
# - Funzione per convalidare il formato dell'email
# - Funzione per ripulire e convalidare i numeri di telefono
# 2. Elabora ogni contatto
# - Ripulisci l'email (in minuscolo) e il numero di telefono (solo cifre)
# - Verifica che l'email e il numero di telefono siano validi
# - Verifica la presenza di duplicati
# 3. Restituisci la lista dei contatti ripulita
passTutte le lezioni di Logica e flusso
1Esplorazione delle variabili
CostantiAssegnazioni multiple di variabiliScambio di variabiliVariabili segnapostoArrotondare i numeriConversione di liste4Applicazione Rubrica
Visualizzare il menuAggiungere un contatto7Insiemi Parte 2
Operazioni matematiche Parte 1Operazioni matematiche Parte 2Riepilogo - Caccia al tesoroSottoinsiemi e sovrainsiemiIterare sugli insiemiRiepilogo - Tracciamento del torneo10Comprensioni di liste di base
La sintassiCreare liste sempliciAggiungere condizioniUsare l'aggregazione dei datiRipasso - La casa delle listeRipasso - Elementi di libertà13Sistema di gestione dell'inventario
Panoramica del progettoAggiungi articolo2Dizionari Parte 1
Che cos'è un dizionario?Creare un dizionarioAccedere ai valoriModificare i dizionariRipasso - Gestore di ricette5Decisioni avanzate
Operatore ternarioVerifiche di appartenenzaVerifiche di identitàErrori di indentazioneRiepilogo - Filtro vacanze8Gestore delle carriere degli studenti
Panoramica del progettoAggiungi studente11Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Sfida di ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di una lista annidata14Funzioni di ordine superiore
La funzione mapLa funzione filterRipasso - Validatore di emailRipasso - Elaboratore di numeri3Dizionari Parte 2
Metodi dei dizionariDizionari annidatiVerificare la presenza di chiaviIterare sui dizionariRipasso - Contatore di frequenza6Insiemi Parte 1
Che cos'è un insieme?Operazioni di baseMetodi degli insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Usare la sommaTrovare il minimo e il massimoOrdinare i dati in modo efficienteRipasso - Ordinatore di dizionari12Gestione di base degli errori
Che cos'è la gestione degli errori?Il blocco try ed exceptGestire più eccezioniRiepilogo - Errori nel carrelloEsercitati da solo: Compilatore Python online