sábado, 7 de junio de 2025

🧪 Python Nivel 1 – Parte 10: Ejercicio Integrador – Gestor de Tareas

 🎯 Objetivo:

Crear un programa realista que permita al usuario:

  • Añadir tareas

  • Marcar tareas como completadas

  • Ver tareas pendientes y completadas

  • Guardar y recuperar tareas desde un archivo .json


📝 Enunciado del proyecto: Gestor de tareas

Escribe un programa que permita al usuario gestionar sus tareas del día. Las tareas se deben guardar en un archivo llamado tareas.json para que no se pierdan al cerrar el programa.


✅ Características:

  1. Menú principal con opciones:

    • Añadir nueva tarea

    • Ver tareas pendientes

    • Marcar tarea como completada

    • Ver tareas completadas

    • Salir

  2. Uso de funciones para cada acción

  3. Datos estructurados con listas y diccionarios

  4. Lectura y escritura en archivo .json para guardar todo


💻 Código completo del proyecto


import json import os archivo = "tareas.json" # Cargar tareas si existe el archivo def cargar_tareas(): if os.path.exists(archivo): with open(archivo, "r", encoding="utf-8") as f: return json.load(f) else: return {"pendientes": [], "completadas": []} # Guardar tareas en archivo def guardar_tareas(tareas): with open(archivo, "w", encoding="utf-8") as f: json.dump(tareas, f, indent=4) # Mostrar tareas def mostrar_tareas(lista, titulo): print(f"\n📋 {titulo}:") if lista: for i, tarea in enumerate(lista, start=1): print(f"{i}. {tarea}") else: print("No hay tareas.") # Menú principal def menu(): tareas = cargar_tareas() while True: print("\n--- MENÚ ---") print("1. Añadir tarea") print("2. Ver pendientes") print("3. Marcar como completada") print("4. Ver completadas") print("5. Salir") opcion = input("Elige una opción: ") if opcion == "1": nueva = input("Escribe la nueva tarea: ") tareas["pendientes"].append(nueva) guardar_tareas(tareas) elif opcion == "2": mostrar_tareas(tareas["pendientes"], "Tareas pendientes") elif opcion == "3": mostrar_tareas(tareas["pendientes"], "Tareas pendientes") if tareas["pendientes"]: try: num = int(input("Número de tarea completada: ")) - 1 completada = tareas["pendientes"].pop(num) tareas["completadas"].append(completada) guardar_tareas(tareas) except (ValueError, IndexError): print("❌ Entrada inválida.") elif opcion == "4": mostrar_tareas(tareas["completadas"], "Tareas completadas") elif opcion == "5": print("✅ Programa cerrado. ¡Hasta pronto!") break else: print("❌ Opción no válida.") # Ejecutar menú menu()

🧠 ¿Qué se repasa aquí?

✔️ Estructuras condicionales y bucles
✔️ Listas, diccionarios y funciones
✔️ Lectura/escritura de archivos .json
✔️ Validación de entrada del usuario
✔️ Organización y reutilización de código


🚀 Próximo paso:

Con este proyecto cierras el Nivel 1 de Python y estás listo para pasar a conceptos intermedios como:

  • clases y objetos

  • librerías externas

  • proyectos web o visuales


📂 Código disponible en GitHub:
github.com/josecodetech

Video tutorial : https://youtu.be/CSeYb1WS7QE



No hay comentarios:

Publicar un comentario

Se procedera a revision para su pronta publicacion en caso de que no incumpla las normas de blogger.