Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução de Atividades - 13 Gerenciador de tarefas

import os

def limpar_terminal ():

    input ("\nDigite qualquer tecla para continuar: ")
    os.system('cls' if os.name == 'nt' else 'clear')

lista_tarefas = []

def exibir_menu():

    """Atribuição: exibe o menu para o usuário."""

    limpar_terminal()
    print ("\nOlá, seja bem vindo ao Gerenciador de Tarefas")
    print ("O que você gostaria de fazer? Escolha as opções abaixo:")

def adicionar_tarefa():

    """Atribuição: adiciona uma tarefa para a lista global de tarefas com o índice e confirmação."""

    tarefa_usuario = str (input ("\nQual tarefa você deseja adicionar? \nResposta: ")).strip (" ")
    validacao_usuario = input ("Você tem certeza que deseja adicionar essa tarefa? (S para sim; qualquer outra tecla para não) \n\nResposta: ").strip (" ").upper()
    lista_tarefas.append ({"indice": len(lista_tarefas) + 1, "tarefa": tarefa_usuario}) if validacao_usuario == "S" else print ("\nTarefa não adicionada. Retornando ao menu principal.") #Ternário
    main()

def vizualizar_tarefas():

    """Atribuição: exibe a lista de tarefas para o usuário."""

    exibir_lista()

    input ("\nDigite qualquer tecla para continuar: ")
    print ("\nProsseguindo ao menu...")
    main()

def exibir_lista():
        
    """Atribuição: exibe a Lista Global de Tarefas"""

    print()

    for tarefa in lista_tarefas:

        print (f"Tarefa Nº{tarefa["indice"]}: {tarefa["tarefa"]}")

def remover_tarefa():

    """Atribuição: remove uma tarefa da lista global de tarefas."""

    exibir_lista()

    try:

        tarefa_escolhida = int (input ("\nDigite o número da tarefa a ser excluída. \nResposta: "))

        if tarefa_escolhida < 1 or tarefa_escolhida > len(lista_tarefas):

            print ("\nNúmero inválido. Por favor, digite um número correspondente a uma tarefa existente.")
            main()

        else:

            for tarefa in lista_tarefas:

                if tarefa["indice"] == tarefa_escolhida:

                    validacao_usuario = input ("Você tem certeza que deseja excluir essa tarefa? (S para sim; qualquer outra tecla para não \n\nResposta: ").strip (" ").upper()
                    lista_tarefas.pop (tarefa_escolhida - 1) if validacao_usuario == "S" else print ("\nTarefa não excluída. Retornando ao menu principal.") #Ternário
                    main()

    except ValueError:

        print ("\nNúmero inválido. Por favor, digite apenas números inteiros.")
        remover_tarefa()

def main():

    """Atribuição: inicia o programa."""

    exibir_menu()

    try:

        escolha_usuario = int (input ("\nOpção 1 - Adicionar uma tarefa; \nOpção 2 - Vizualizar a lista de tarefas \nOpção 3 - Remover uma tarefa \nOpção 4 - Sair \n\nResposta: "))

        if escolha_usuario == 1:

            adicionar_tarefa()

        elif escolha_usuario == 2:

            vizualizar_tarefas()

        elif escolha_usuario == 3:

            remover_tarefa()

        elif escolha_usuario == 4:

            print ("\nObrigado por usar nossos serviços. Estamos à sua disposição para qualquer tarefa! Até mais =)")
            lista_tarefas.clear()   #Limpar a lista para evitar memory leak
            pass
        
        else:

            print ("\nOpção inválida, por favor digite apenas os números correspondentes (1 a 4).")
            main()

    except ValueError:

        print ("\nOpção inválida. \nPor favor, digite apenas números inteiros.")
        main()

main()
1 resposta
solução!

Oi, Victor! Como vai?

Seu gerenciador de tarefas ficou bem organizado, com funções separadas para adicionar, visualizar e remover tarefas. Um ponto que chamou atenção foi o uso de lista com dicionários, que ajuda a guardar o número e a descrição de cada tarefa. Só vale ajustar a linha do print dentro de exibir_lista(), usando aspas simples nas chaves do dicionário para evitar conflito com a f-string.

Uma dica interessante para o futuro é usar enumerate() para gerar a numeração das tarefas no momento da exibição, sem precisar guardar o indice manualmente. Veja este exemplo:


def exibir_lista():
    for indice, tarefa in enumerate(lista_tarefas, start=1):
        print(f"Tarefa Nº{indice}: {tarefa['tarefa']}")

Esse código percorre a lista e cria a numeração automaticamente a partir de 1, deixando a exibição mais simples e evitando problemas caso alguma tarefa seja removida.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!