Diario personal
Dex Hola. La verdad es que la misión ha sido mucho y tenía pensado llevar un registro. ¿Puedes crear una app de diario sencilla? Quiero escribir una nueva entrada, que se guarde con la fecha, y poder releer las antiguas. Nada complicado. Solo algo para sacarme los pensamientos de la cabeza ✍️
Lo que vas a construir
Commands: new / read / quit
> new
2026-05-24
Tuve una mañana productiva. Terminé el proyecto del gestor de inventario.
Entendí bien cómo funciona la serialización JSON.
[press Enter on an empty line to save]
Entry saved.
> read
--- 2026-05-24 ---
Tuve una mañana productiva. Terminé el proyecto del gestor de inventario.
Entendí bien cómo funciona la serialización JSON.
--- 2026-05-23 ---
...
> quitLo que necesitarás
- Archivos y excepciones — modo append para las nuevas entradas, leer el archivo completo, manejar un archivo inexistente en la primera ejecución
- Módulos y la biblioteca estándar —
datetimepara obtener la fecha de hoy como cadena - Cadenas — dar formato al encabezado de la fecha, dividir el contenido del archivo en entradas
- Flujo de control — el bucle de comandos, el bucle de entrada de varias líneas para escribir una entrada
- Salida y entrada
Pistas
El modo append es la clave. Abrir un archivo con "a" agrega contenido al final sin tocar lo que ya está. Así es como las nuevas entradas se añaden sin borrar las antiguas.
datetime.date.today() te da la fecha. Conviértela en cadena con str() o un f-string para usarla como encabezado de la entrada. El módulo datetime está en la biblioteca estándar.
Reúne la entrada antes de escribirla. Deja que el usuario escriba varias líneas, agregando cada una a una lista. Cuando envíe una línea vacía, une la lista y escribe la entrada completa de una vez.
Llevándolo más lejos
Una vez que el diario básico funcione:
- Limita lo que muestra
read. Imprimir siempre todo el archivo se vuelve incómodo rápidamente. Muestra solo las últimas tres entradas por defecto, con una opción para mostrar más. - Buscar entradas. Agrega un comando
searchque imprima cualquier entrada que contenga una palabra clave. - Conteo de palabras por entrada. Muestra cuántas palabras contiene cada entrada al mostrarla.

