Menu
Coddy logo textTech

Gerenciador de Contatos Inteligente

Parte da seção Logic & Flow do Journey de Python da Coddy — lição 76 de 78.

challenge icon

Desafio

Médio

Crie uma função chamada organize_contacts que processa uma lista de dicionários de contatos para criar um banco de dados de contatos limpo.

Cada dicionário de contato na lista de entrada possui estas chaves:

  • name: O nome da pessoa
  • email: O endereço de e-mail da pessoa
  • phone: O número de telefone da pessoa

Sua função deve:

  1. Remover contatos duplicados (contatos com o mesmo e-mail ou número de telefone), mantendo a primeira ocorrência
  2. Padronizar todos os e-mails para letras minúsculas
  3. Filtrar contatos com endereços de e-mail inválidos
  4. Filtrar contatos com números de telefone inválidos
  5. Retornar uma lista de dicionários de contatos limpos

Regras de validação:

  • E-mail válido: Deve conter '@' e '.', e não deve conter espaços
  • Telefone válido: Deve conter exatamente 10 dígitos (ignore caracteres que não sejam dígitos, como traços ou parênteses)

Para limpar os números de telefone, você deve usar o método str.isdigit() do Python para extrair apenas os dígitos numéricos dos números de telefone. Este método retorna True se um caractere for um dígito (0-9) e False caso contrário, tornando-o perfeito para filtrar caracteres que não sejam dígitos.

Exemplo de Entrada:

contacts = [
    {"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]

Saída Esperada:

[
    {"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]

Experimente você mesmo

def organize_contacts(contact_list):
    # Sua solução aqui
    
    # 1. Crie funções auxiliares para validação
    # - Função para validar o formato do e-mail
    # - Função para limpar e validar números de telefone
    
    # 2. Processe cada contato
    # - Limpe o e-mail (letras minúsculas) e o telefone (apenas dígitos)
    # - Verifique se o e-mail e o telefone são válidos
    # - Verifique se há duplicatas
    
    # 3. Retorne a lista de contatos limpa
    pass

Todas as lições de Logic & Flow