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

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. ...

> quit

O 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 delete que remove um contato por nome.
  • Lista ordenada. Ordene a saída da lista alfabeticamente por nome antes de imprimir.