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. ...
> quitO 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
deleteque remove um contato pelo nome. - Lista ordenada. Ordene a saída da lista alfabeticamente pelo nome antes de imprimir.

