Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] Gerenciador de tarefas

import time

tarefas = []

def menu():
    print("-" * 20)
    print("Bem vindo ao Bi-do List")
    time.sleep(2)
    print("Escolha uma das opções")
    print('''
            1. Adicionar tarefa
            2. Visualizar tarefas
            3. Remover tarefas
            4. Sair
        ''')
    print("-" * 20)

def adicionar_tarefa():

    tarefa = input("Escreva a tarefa que você deseja: ")
    tarefas.append(tarefa)

    print("Tarefa adicionada! ")

def visualizar_tarefa():
    if not tarefas:
        print("Nenhuma tarefa adicionada.")
        return

    print("\nTarefas:")

    for contador, tarefa in enumerate(tarefas, start=1):
        print(f"{contador}. {tarefa}")

def remover_tarefa():
    if not tarefas:
            print("Erro: Nenhuma tarefa para remover.")
            return

    try:
        item = int(input("Digite o número da tarefa a ser removida: "))
        tarefa = tarefas.pop(item - 1) 
        print(f"Tarefa '{tarefa}' removida!")
    except ValueError:
        print("Erro: Entrada inválida! Digite um número.")
    except IndexError:
        print("Erro: Tarefa inválida!")

def sair():
    print("Saindo do gerenciador de tarefas. Até mais!")


while True: 
        time.sleep(1)
        menu()
        escolha = int(input("Escolha uma opção: "))

        if escolha == 1:
            adicionar_tarefa()
        elif escolha == 2:
            visualizar_tarefa()
        elif escolha == 3:
            remover_tarefa()
        elif escolha == 4:
            sair()
            break
        else:
            print("Opção inválida")
1 resposta

Olá, Ana. Tudo bem com você?

Seu código ficou excelente e atendeu perfeitamente ao que foi proposto. A divisão do programa em funções bem definidas para adicionar, visualizar e remover itens deixa a leitura do script muito limpa e organizada, além de facilitar a manutenção. O uso da estrutura de repetição while combinada com as condições de controle funcionou sem problemas para manter o menu interativo ativo durante a execução.

A implementação do bloco try-except para tratar possíveis falhas na conversão de tipos e no acesso aos índices da lista mostrou bastante cuidado com a usabilidade.

Como você abordaria a inclusão de um recurso para salvar essa lista em um arquivo de texto para que os dados não sejam perdidos ao fechar o programa?

Parabéns pelo excelente trabalho no desenvolvimento desse projeto e por compartilhar sua solução com a comunidade, continue assim. Se surgir qualquer outra dúvida ao longo dos seus estudos, lembre-se de que o fórum está sempre à sua disposição.

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