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

[Projeto] RESOLUÇÃO - Gerenciador de tarefas

Boa tarde pessoal, compartilho aqui minha atividade.
Depois de fazer vi que o instrutor tomou um caminho mais simples, o lado bom de ter tomado o caminho mais dificil é que consegui praticar e entender melhor alguns conceitos. Hahahaha

# Ana precisa de um programa simples para gerenciar suas tarefas diárias. Ela quer poder adicionar, visualizar e remover tarefas de uma lista.
# Crie um programa com um menu interativo que permita ao usuário adicionar, visualizar e remover tarefas. Use uma lista para armazenar as tarefas.
# Exemplo de entrada:
#
# 1. Adicionar tarefa
# 2. Visualizar tarefas
# 3. Remover tarefa
# 4. Sair
#
# Escolha uma opção:

import os

tarefas = []

def adicionar_tarefa():
    new_task = input("Insira a nova tarefa: ").upper()
    tarefas.append(new_task)
    print(f"Tarefa {new_task} adicionada com sucesso!")

def visualizar_tarefa(tasks):
    if len(tarefas) == 0:
        print("Nenhum tarefa adicionada.")
        return
    else:
        print("Lista de tarefas: ")
        for indice, tarefa in enumerate(tasks, start=1):
            print(f"{indice}. {tarefa}")

def remover_tarefa(tasks):
    try:
        if len(tarefas) == 0:
            print("Nenhum tarefa para remover.")
            return
        else:
            task = int(input("Insira o número da tarefa a ser removida: "))
            print(f"Tarefa {tasks[task - 1]} removida com sucesso!")
            del tarefas[task - 1]
    except(IndexError, ValueError):
        print("Opção invalida.")

def opcoes():
    print("""
        1. Adicionar tarefa
        2. Visualizar tarefas
        3. Remover tarefa
        4. Sair
    """)

def main():
    while True:
        os.system('cls')
        opcoes()

        try:
            user_choice = int(input("Escolha uma opção: "))
            match user_choice:
                case 1:
                    adicionar_tarefa()
                case 2:
                    visualizar_tarefa(tarefas)
                case 3:
                    remover_tarefa(tarefas)
                case 4:
                    print("Encerrando o programa.")
                    break
                case _:
                    print("Opção inválida.")
        except ValueError:
            print("Digite apenas números.")

        input("Pressione ENTER para continuar...")

if __name__ == "__main__":
    main()
1 resposta

Boa noite, Caue! Tranquilo?

Gostei demais da sua solução, continue assim!

Mandou muito bem explorando o match-case para criar um menu interativo com Python, aplicou de maneira eficiente o listas para armazenar tarefas e entendeu como usar o os.system para limpar a tela e deixar o programa mais dinâmico.

E um detalhe curioso para aprimorar seria mostrar ao usuário quantas tarefas estão cadastradas sempre que ele visualizar a lista. Exemplo:

def visualizar_tarefa(tasks):
    if len(tasks) == 0:
        print("Nenhuma tarefa adicionada.")
    else:
        print(f"Você tem {len(tasks)} tarefas cadastradas:")
        for indice, tarefa in enumerate(tasks, start=1):
            print(f"{indice}. {tarefa}")

Isso faz com que o usuário tenha uma visão mais clara da quantidade de tarefas pendentes.

Para aprimorar suas soluções, algumas boas práticas são:

  • Organização: separar funções em módulos para facilitar manutenção.
  • Persistência: salvar as tarefas em arquivo para não perder os dados ao encerrar o programa.
  • Validação de entrada: garantir que o usuário não insira números inválidos ao remover tarefas.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: o que você gostaria de praticar mais agora, implementar persistência de dados para salvar as tarefas ou explorar ordenação automática para organizar a lista por prioridade?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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