Diário pessoal
Dex Ei. Sinceramente, a missão tem sido muita coisa e eu venho querendo manter um registro. Você pode construir um aplicativo de diário simples? Quero digitar uma nova entrada, tê-la salva com a data, e poder reler as antigas. Nada complicado. Só algo para tirar os pensamentos da minha cabeça ✍️
O que você vai construir
Commands: new / read / quit
> new
2026-05-24
Tive uma manhã produtiva. Terminei o projeto do gerenciador de inventário.
Entendi como a serialização JSON funciona direito.
[press Enter on an empty line to save]
Entry saved.
> read
--- 2026-05-24 ---
Tive uma manhã produtiva. Terminei o projeto do gerenciador de inventário.
Entendi como a serialização JSON funciona direito.
--- 2026-05-23 ---
...
> quitO que você vai precisar
- Arquivos e exceções — modo append para novas entradas, leitura do arquivo inteiro, tratamento de arquivo inexistente na primeira execução
- Módulos e a biblioteca padrão —
datetimepara a data de hoje como string - Strings — formatação do cabeçalho de data, divisão do conteúdo do arquivo de volta em entradas
- Controle de fluxo — o loop de comandos, o loop de entrada de múltiplas linhas para escrever uma entrada
- Saída e entrada
Dicas
O modo append é a chave. Abrir um arquivo com "a" adiciona ao final sem tocar no que já existe. É assim que novas entradas entram sem apagar as antigas.
datetime.date.today() te dá a data. Converta-a para string com str() ou uma f-string para usá-la como cabeçalho da entrada. O módulo datetime está na biblioteca padrão.
Colete a entrada antes de escrever. Deixe o usuário digitar várias linhas, adicionando cada uma a uma lista. Quando ele enviar uma linha vazia, junte a lista e escreva a entrada inteira de uma vez.
Indo além
Quando o diário básico estiver funcionando:
- Limite o que o
readmostra. Imprimir o arquivo inteiro sempre fica inviável rápido. Mostre apenas as três últimas entradas por padrão, com uma opção para mostrar mais. - Buscar entradas. Adicione um comando
searchque imprima qualquer entrada contendo uma palavra-chave. - Contagem de palavras por entrada. Mostre quantas palavras cada entrada contém ao exibi-la.

