Skip to content
This page has been auto-translated and may contain errors.View in English

Agenda de contatos

Pip Olá! Tenho contatos espalhados por seis estações e vivo perdendo o controle deles. Números, e-mails, tudo bagunçado. Você consegue criar uma agenda de contatos simples que eu possa rodar num terminal? Adicionar pessoas, buscar por nome, listar todo mundo. Nada sofisticado, só algo que funcione de verdade 🙏

O que você vai construir

Commands: add / search / list / quit

> add
Name: Ana Silva
Phone: 07700 900123
Email: [email protected]
Saved.

> search
Name: ana
Ana Silva — 07700 900123 — [email protected]

> list
1. Ana Silva — 07700 900123
2. ...

> quit

O que você vai precisar

  • Dicionários — cada contato é um dicionário; a agenda é uma lista deles
  • Listas — todos os contatos juntos em uma única lista que você pode percorrer
  • Funções — uma função por comando mantém o código limpo e legível
  • Controle de fluxo — um loop que roda até o usuário digitar "quit"
  • Strings — busca insensível a maiúsculas/minúsculas, formatação de nomes

Dicas

Armazene cada contato como um dicionário. Chaves como "name", "phone", "email". Mantenha todos os contatos em uma lista fora do loop para que persistam entre os comandos.

Um loop while com verificação de comando é a estrutura natural. Leia o comando, chame a função certa, repita. Saia quando o usuário digitar "quit".

Para busca, correspondência parcial é mais útil do que exata. Verificar se o termo buscado aparece em qualquer parte do nome — sem diferenciar maiúsculas e minúsculas — faz com que "ana" encontre "Ana Silva".

Indo além

Quando o loop principal estiver funcionando:

  • Salvar e carregar. Quando o usuário sair, grave todos os contatos em um arquivo JSON. Quando o script iniciar, carregue esse arquivo se ele existir. Isso requer o capítulo de arquivos.
  • Excluir um contato. Adicione um comando delete que remove um contato pelo nome.
  • Lista ordenada. Ordene a saída da lista alfabeticamente pelo nome antes de imprimir.