title: Agenda de contatos description: Um app de CLI que roda em loop para que você possa adicionar, pesquisar e listar contatos durante uma sessão.
Agenda de contatos
Pip Opa! Tenho contatos espalhados por seis estações e fico perdendo o controle deles. Números, emails, tudo desorganizado. Você consegue construir uma agenda de contatos simples que eu possa rodar no terminal? Adicionar pessoas, pesquisar por nome, listar todos. Nada de fancy, só algo que funcione mesmo 🙏
O que você vai construir
Commands: add / search / list / quit
> add
Name: Maria Silva
Phone: 07700 900123
Email: [email protected]
Saved.
> search
Name: maria
Maria Silva - 07700 900123 - [email protected]
> list
1. Maria Silva - 07700 900123
2. ...
> quitO que você vai precisar
- Dictionaries - cada contato é um dictionary; a agenda é uma lista deles
- Lists - todos os contatos juntos em uma lista que você pode iterar
- Functions - uma função por comando mantém o código limpo e legível
- Control flow - um loop que executa até o usuário digitar "quit"
- Strings - pesquisa case-insensitive, formatação de nomes
Dicas
Armazene cada contato como um dictionary. Chaves como "name", "phone", "email". Mantenha todos os contatos em uma lista fora do loop para que persistam entre comandos.
Um while loop com uma verificação de comando é a estrutura natural. Leia o comando, chame a função certa, repita. Saia quando o usuário digitar "quit".
Para pesquisa, correspondência parcial é mais útil que exata. Verificar se o termo de pesquisa aparece em qualquer lugar do nome - case-insensitively - significa que "maria" encontra "Maria Silva".
Indo além
Quando o loop principal funcionar:
- Salvar e carregar. Quando o usuário sair, escreva todos os contatos em um arquivo JSON. Quando o script começa, carregue esse arquivo se existir. Isso requer o capítulo de files.
- Deletar um contato. Adicione um comando
deleteque remove um contato por nome. - Lista ordenada. Ordene a saída da lista alfabeticamente por nome antes de imprimir.

