1
resposta

[Projeto] Remover tarefas

def obter_tarefas_a() -> set[str]:
    """
    Obtem as tarefas do grupo a;
    
    Retorna as tarefas em um conjunto;
    """
    return{"planejar reunião", "revisar documento", "testar sistema"}


def obter_tarefas_b() -> set[str]:
    """
    Obtem as tarefas do grupo b. 
    
    Retorna as tarefas em um conjunto;
    """
    return{"testar sistema", "implementar funcionalidade", "corrigir bug"} 


def combinar_tarefas(equipe_a: set[str], equipe_b: set[str]) -> set[str]:
    """
    Recebe as tarefas da equipe 'a' e da equipe 'b' e une ambas em 1 conjunto de string;
    """
    return equipe_a.union(equipe_b)


def remover_tarefa(tarefas : set[str]) -> set[str]:
    """
    Pede que seja inserido uma tarefa a ser removida;

    Se a tarefa inserida for encontrada dentro da lista, retorna True e a remove;
    Se não for encontrada retorna False e repete a função;
    Pergunta se deseja remover outra tarefa ou encerrar o programa;
    """
    while True:
        tarefa_removida = input('Digite a tarefa que deseja remover: ').strip().lower()        
        tarefa_lower = {t.lower(): t for t in tarefas}

        if tarefa_removida in tarefa_lower:
            tarefa_original = tarefa_lower[tarefa_removida]
            tarefas.remove(tarefa_original)
            print(f'A tarefa {tarefa_original} foi removida com sucesso!')            
        else:
            print('Digite uma tarefa válida. Tente novamente.')
            continue

        if not continuar_programa("Deseja remover outra tarefa? (s/n)"):
            break
    
    return tarefas


def continuar_programa(mensagem: str) -> bool:
    """
    Recebe uma mensagem personalizada perguntando se o usuário deseja continuar (EX: "Deseja continuar adicionando itens à lista? s/n")
    
    Retorna True para 's' e False para 'n'.
    """
    while True:
        continuar = input(mensagem).strip().lower()

        if continuar in ('s', 'n'):
            return continuar == 's'
        print('Por favor, responda com "s" ou "n".')                


def main():
    a = obter_tarefas_a()
    b = obter_tarefas_b()
    tarefas = combinar_tarefas(a, b)
    remover_tarefa(tarefas)
    print(f'Tarefas finais: {tarefas}')


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

Oii, Matheus! Como vai?

Gostei de ver como você usou union para juntar as tarefas e fez a remoção considerando maiúsculas e minúsculas. Ótima solução para evitar erros de digitação.

Uma dica interessante para o futuro é usar difference para remover várias tarefas de uma vez. Veja este exemplo:


tarefas = {"tarefa1", "tarefa2", "tarefa3"}
remover = {"tarefa1", "tarefa3"}

tarefas = tarefas.difference(remover)
print(tarefas)

Este código remove de tarefas todos os itens que estão em remover.

Conteúdos relacionados
Alura

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