2
respostas

Gerenciador de tarefas

import msvcrt
import os

def limpar_tela():
    os.system("cls")

def pausa_limpa(texto):
    print()
    print(texto)
    print("Aperte uma tecla para continuar", end="", flush=True)
    msvcrt.getch()
    limpar_tela()

def criando_lista_de_tarefas():
    global lista_de_tarefas 
    lista_de_tarefas = []

def menu():
    print("""
========= Menu =========
          
1 - Adicionar tarefa
2 - Vizualizar tarefas
3 - Remover tarefas
4 - Fechar programa
""")

def subtitulos(subtitulo):
    limpar_tela()
    linha = "-" * (len(subtitulo) + 4)
    print(linha)
    print(" ", subtitulo)
    print(linha)
    print()
    
def escolhendo_opcoes():
    while True:
        try:
            menu()
            opcao = int(input("Digite uma opção do menu: ").strip())

            if opcao == 1:
                pausa_limpa("Opção 1 selecionada")
                adicionar_tarefa()
            elif opcao == 2:
                pausa_limpa("Opção 2 selecionada")
                vizualizar_tarefas()
            elif opcao == 3:
                pausa_limpa("Opção 3 selecionada")
                remover_tarefas()
            elif opcao == 4:
                pausa_limpa("Opção 4 selecionada")
                print("Fim do programa")
                break
            else:
                pausa_limpa("Opção inválida. Digite um número do menu.")

        except ValueError:
            pausa_limpa("Opção inválida. Digite apenas números")
            continue
    
def adicionar_tarefa():
    while True:
        subtitulos("Adicionar Tarefas")
        tarefa = input("Digite a tarefa ou 's' para sair: ").strip().lower()

        if tarefa in ["s", "sair"]:
            pausa_limpa("Voltar ao menu")
            break

        if not validando(tarefa):
            pausa_limpa("Tarefa inválida. Contém apenas números ou caracteres especiais.")
            continue

        if any(item.lower() == tarefa for item in lista_de_tarefas):
            pausa_limpa("Está tarefa já existe")
            continue

        lista_de_tarefas.append(tarefa.title())
        pausa_limpa("Tarefa adicionada com sucesso")

        #for item in lista_de_tarefas:
        #    if item.lower() == tarefa:
        #        pausa_limpa("Está tarefa já existe.")
        #          break
        #else: #entra aqui se nao encontrou duplicata
        #    lista_de_tarefas.append(tarefa.title())
        #    pausa_limpa("Tarefa adicionada com sucesso.")
        #    continue

        #oooou

        #duplicada = False
        #for item in lista_de_tarefas:
        #    if item.lower() == tarefa:
        #        duplicada = True
        #        pausa_limpa("Está tarefa já existe.")
        #        break
        #     
        #if duplicada:
        #   continue

        #se não duplicou, adiciona

        #lista_de_tarefas.append(tarefa.title())
        #pausa_limpa("Tarefa adicionada com sucesso.")

def validando(texto):
    tem_letras = any(c.isalpha() for c in texto)
    if texto == "" or not tem_letras:
        return False
    else:
        return True
    
def listar_tarefas():
    for i, atividade in enumerate(lista_de_tarefas, start = 1):
            print(f"{i} - {atividade}")

def vizualizar_tarefas():
    if not lista_de_tarefas:
        print("A lista de atividades está vazia.")
        pausa_limpa("Retornar ao menu")
    else:
        subtitulos("Lista de tarefas")
        listar_tarefas()
        pausa_limpa("Retornar ao menu")

def remover_tarefas():
     while True:
        limpar_tela()
        if not lista_de_tarefas:
            print("Não há tarefas para remover.")
            pausa_limpa("Retornar ao menu")
            break
        
        subtitulos("Remover tarefas")

        listar_tarefas()

        print()
        opcao = input("Digite o nome, número da tarefa que deseja remover ou 's' para sair: ").strip().lower()
        
        if opcao in ["s", "sair"]:
            pausa_limpa("Voltar ao menu")
            break

        #caso digite numero
        if opcao.isdigit():
            numero = int(opcao)

            if 1 <= numero <= len(lista_de_tarefas):
                tarefa_removida = lista_de_tarefas.pop(numero - 1) #escolhe apagar 4, mas o indice vai ser 3
                pausa_limpa(f"Tarefa '{tarefa_removida}' removida com sucesso")
            else:
                pausa_limpa("Número fora do intervalo")
                continue

        #caso digite texto
        else:
            for tarefa in lista_de_tarefas:
                if tarefa.lower() == opcao:
                    lista_de_tarefas.remove(tarefa)
                    pausa_limpa(f"Tarefa '{tarefa}' removida com sucesso")
                    break
2 respostas

Continuação:

            else:
                pausa_limpa("Tarefa não encontrada")
                continue

def main():
    criando_lista_de_tarefas()
    escolhendo_opcoes()

if __name__ == "__main__":
    main()

Oi, Rafaela! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Curti como você organizou o projeto em funções (menu(), adicionar_tarefa(), remover_tarefas()) e ainda adicionou validações com try/except e validando(), deixando o fluxo mais confiável e agradável de usar.

Uma dica interessante para o futuro é criar uma função para normalizar texto e reaproveitar isso em comparações, evitando duplicatas por causa de maiusculas/minusculas.


def normalizar(texto):
    return texto.strip().lower()

tarefa = normalizar(input("Digite a tarefa: "))
lista = [normalizar(t) for t in lista_de_tarefas]

if tarefa in lista:
    print("Tarefa ja existe")

Continue firme nos estudos.

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