Saltar a contenido

Ejercicio: Crear una lista de tareas y manipularla

1. Enunciado

Crea una aplicación que gestione tareas utilizando listas. La aplicación permitirá lo siguiente:

  1. Dar de alta tareas: El usuario podrá introducir tareas que se añadirán a una lista de tareas pendientes.
  2. Marcar tareas como finalizadas: El usuario podrá marcar tareas pendientes como completadas, moviéndolas a una lista de tareas finalizadas.
  3. Listar tareas pendientes: El usuario podrá ver las tareas que aún no se han completado.
  4. Listar tareas finalizadas: El usuario podrá ver las tareas que ya han sido completadas.
  5. Eliminar tareas: El usuario podrá eliminar tareas de la lista de tareas pendientes.

Toda la información se guardará en listas separadas: una lista para tareas pendientes y otra para tareas finalizadas.

Recuerda que no se deben usar funciones. El código debe ser manejado dentro de un solo bloque sin modularización.

2. Explicación paso a paso de la solución

  1. Inicialización de listas:

    • Se crean dos listas vacías: una para las tareas pendientes y otra para las tareas finalizadas.
    • Las listas se actualizarán a medida que el usuario interactúe con el programa.
  2. Bucle de interacción con el usuario:

    • Usamos un bucle while True para que el programa siga ejecutándose hasta que el usuario decida salir.
    • Dentro del bucle, mostramos un menú de opciones donde el usuario puede elegir qué acción realizar.
  3. Dar de alta tareas:

    • Si el usuario selecciona la opción para dar de alta una tarea, se le pide que ingrese el nombre de la tarea.
    • Luego, utilizamos append() para agregar la tarea a la lista de tareas pendientes.
  4. Marcar tarea como finalizada:

    • Si el usuario elige la opción para marcar una tarea como finalizada, mostramos la lista de tareas pendientes con un índice.
    • El usuario elige una tarea por su índice, y con pop(), la movemos de tareas pendientes a tareas finalizadas.
  5. Listar tareas pendientes y finalizadas:

    • Si el usuario elige listar las tareas, simplemente mostramos las listas correspondientes.
    • Si una lista está vacía, se muestra un mensaje indicando que no hay tareas en esa categoría.
  6. Eliminar tareas:

    • Si el usuario elige eliminar una tarea, mostramos las tareas pendientes y le pedimos que seleccione una para eliminar.
    • Utilizamos pop() para eliminar la tarea seleccionada de la lista de tareas pendientes.
  7. Opción para salir:

    • Si el usuario selecciona la opción de salir, el programa imprime un mensaje de despedida y termina el bucle con break.

3. Código completo

gestor_tareas.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Inicializamos las listas que guardarán las tareas
tareas_pendientes = []  # Lista que guarda las tareas que están pendientes
tareas_finalizadas = []  # Lista que guarda las tareas que ya han sido finalizadas

# Bucle para permitir al usuario interactuar con el programa
while True:
    print("\n--- Gestión de Tareas ---")
    print("1. Alta de tarea")
    print("2. Marcar tarea como finalizada")
    print("3. Listar tareas pendientes")
    print("4. Listar tareas finalizadas")
    print("5. Eliminar tarea")
    print("6. Salir")

    # Pedimos al usuario que elija una opción
    opcion = input("Elige una opción (1-6): ")

    # Opción 1: Alta de tarea
    if opcion == "1":
        tarea = input("Introduce la tarea: ")
        tareas_pendientes.append(tarea)  # Añadimos la nueva tarea a la lista de pendientes
        print(f"Tarea '{tarea}' añadida a las tareas pendientes.")

    # Opción 2: Marcar tarea como finalizada
    elif opcion == "2":
        if len(tareas_pendientes) == 0:
            print("No tienes tareas pendientes para marcar como finalizadas.")
        else:
            print("Tareas pendientes:")
            for i, tarea in enumerate(tareas_pendientes):
                print(f"{i + 1}. {tarea}")  # Listamos las tareas pendientes con un índice

            # Pedimos al usuario el número de la tarea que quiere marcar como finalizada
            tarea_finalizada = int(input("Elige el número de la tarea a marcar como finalizada: ")) - 1

            # Verificamos que el índice sea válido
            if 0 <= tarea_finalizada < len(tareas_pendientes):
                tarea = tareas_pendientes.pop(tarea_finalizada)  # Eliminamos la tarea de pendientes
                tareas_finalizadas.append(tarea)  # Añadimos la tarea a la lista de finalizadas
                print(f"Tarea '{tarea}' marcada como finalizada.")
            else:
                print("Número de tarea inválido.")

    # Opción 3: Listar tareas pendientes
    elif opcion == "3":
        if len(tareas_pendientes) == 0:
            print("No tienes tareas pendientes.")
        else:
            print("Tareas pendientes:")
            for tarea in tareas_pendientes:
                print(f"- {tarea}")

    # Opción 4: Listar tareas finalizadas
    elif opcion == "4":
        if len(tareas_finalizadas) == 0:
            print("No tienes tareas finalizadas.")
        else:
            print("Tareas finalizadas:")
            for tarea in tareas_finalizadas:
                print(f"- {tarea}")

    # Opción 5: Eliminar tarea
    elif opcion == "5":
        print("Tareas pendientes:")
        if len(tareas_pendientes) == 0:
            print("No tienes tareas pendientes para eliminar.")
        else:
            for i, tarea in enumerate(tareas_pendientes):
                print(f"{i + 1}. {tarea}")  # Mostramos las tareas pendientes con un índice

            tarea_eliminar = int(input("Elige el número de la tarea a eliminar: ")) - 1

            # Verificamos que el índice sea válido
            if 0 <= tarea_eliminar < len(tareas_pendientes):
                tarea = tareas_pendientes.pop(tarea_eliminar)  # Eliminamos la tarea de la lista de pendientes
                print(f"Tarea '{tarea}' eliminada.")
            else:
                print("Número de tarea inválido.")

    # Opción 6: Salir
    elif opcion == "6":
        print("¡Hasta luego!")
        break

    else:
        print("Opción no válida. Por favor, elige una opción entre 1 y 6.")