Gestor de contactos inteligente
Parte de la sección Logic & Flow del Journey de Python de Coddy — lección 76 de 78.
Desafío
IntermedioCrea una función llamada organize_contacts que procese una lista de diccionarios de contactos para crear una base de datos de contactos limpia.
Cada diccionario de contacto en la lista de entrada tiene estas claves:
name: El nombre de la personaemail: La dirección de correo electrónico de la personaphone: El número de teléfono de la persona
Tu función debe:
- Eliminar contactos duplicados (contactos con el mismo correo electrónico o número de teléfono), manteniendo la primera aparición
- Estandarizar todos los correos electrónicos a minúsculas
- Filtrar los contactos con direcciones de correo electrónico inválidas
- Filtrar los contactos con números de teléfono inválidos
- Devolver una lista de diccionarios de contactos limpios
Reglas de validación:
- Correo electrónico válido: Debe contener '@' y '.', y no debe tener espacios
- Teléfono válido: Debe contener exactamente 10 dígitos (ignora los caracteres que no sean dígitos como guiones o paréntesis)
Para limpiar los números de teléfono, debes usar el método str.isdigit() de Python para extraer solo los dígitos numéricos de los números de teléfono. Este método devuelve True si un carácter es un dígito (0-9) y False en caso contrario, lo que lo hace perfecto para filtrar caracteres que no sean dígitos.
Ejemplo de Entrada:
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Salida Esperada:
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Pruébalo tú mismo
def organize_contacts(contact_list):
# Tu solución aquí
# 1. Crear funciones auxiliares para la validación
# - Función para validar el formato del correo electrónico
# - Función para limpiar y validar números de teléfono
# 2. Procesar cada contacto
# - Limpiar el correo electrónico (minúsculas) y el teléfono (solo dígitos)
# - Comprobar si el correo electrónico y el teléfono son válidos
# - Comprobar si hay duplicados
# 3. Devolver la lista de contactos limpia
passTodas las lecciones de Logic & Flow
1Exploración de variables
ConstantesAsignación de múltiples variablesIntercambio de variablesVariables de marcador de posiciónRedondear númerosCasting de listas4Aplicación de Agenda de Contactos
Mostrar MenúAgregar Contacto7Conjuntos Parte 2
Operaciones matemáticas Parte 1Operaciones matemáticas Parte 2Resumen - Búsqueda del tesoroSubconjuntos y superconjuntosIterar sobre conjuntosResumen - Rastreador de torneos10Comprensión de listas básica
La sintaxisCreación de listas simplesAñadir condicionesUso de agregación de datosResumen - La casa de las listasResumen - Elementos de libertad13Sistema de Gestión de Inventarios
Descripción general del proyectoAgregar artículo2Diccionarios Parte 1
¿Qué es un diccionario?Crear un diccionarioAcceder a los valoresModificar diccionariosResumen - Gestor de recetas5Toma de decisiones avanzada
Operador ternarioComprobaciones de pertenenciaComprobaciones de identidadErrores de sangríaRepaso - Filtro de vacaciones8Gestor de registros de estudiantes
Descripción general del proyectoAñadir estudiante11Funciones avanzadas
Retornar múltiples valoresFunciones Lambda Parte 1Funciones Lambda Parte 2Desafío de repaso - Lambda SortFunciones recursivas Parte 1Funciones recursivas Parte 2Repaso - Sumar listas anidadas14Funciones de orden superior
La función MapLa función FilterRepaso - Validador de emailsRepaso - Procesador de números3Diccionarios Parte 2
Métodos de diccionariosDiccionarios anidadosVerificación de clavesIterar sobre diccionariosResumen - Contador de frecuencia6Conjuntos - Parte 1
¿Qué es un conjunto?Operaciones básicasMétodos de conjuntosResumen - Eliminar duplicados9Agregación de datos avanzada
Uso de SumBúsqueda de mínimo y máximoOrdenar datos de manera eficienteRepaso - Ordenador de diccionarios