1
resposta

[Projeto] Mostrando o código

class Alteratudo:

    equipe_a = {"planejar reunião", "revisar documento", "testar sistema"}

    equipe_b = {"testar sistema", "implementar funcionalidade", "corrigir bug"}

    def coletar_dado(self):
        print("\nProcedimentos disponíveis:")
        print(self.equipe_a.union(self.equipe_b))

        self.remove = input(
            "\nDigite o procedimento que deseja remover "
            "(escreva 'sair' para parar): "
        )

    def verificar(self):

        while self.remove != 'sair':

            if self.remove in self.equipe_a:
                self.equipe_a.remove(self.remove)
                print(f"\n'{self.remove}' removido da equipe A")

            elif self.remove in self.equipe_b:
                self.equipe_b.remove(self.remove)
                print(f"\n'{self.remove}' removido da equipe B")

            else:
                self.erro()

            print("\nConjunto atualizado:")
            print(self.equipe_a.union(self.equipe_b))

            self.remove = input(
                "\nDigite outro procedimento "
                "(ou 'sair' para encerrar): "
            )

        print("\nPrograma encerrado.")

    def erro(self):
        print(
            "\nVocê digitou errado ou o procedimento não existe.\n"
        )

    def main(self):
        self.coletar_dado()
        self.verificar()


if __name__ == '__main__':

    executar = Alteratudo()
    executar.main()

Deu trabaio em, tb queria compartilhar q peguei segundo lugar no hackathon da eseg

1 resposta

Olá, Joao. Como vai?

Parabéns pelo excelente trabalho no código e, principalmente, por essa conquista incrível no hackathon da ESEG! Ficar em segundo lugar em uma competição desse nível é um sinal claro de que você está aplicando muito bem o seu raciocínio lógico e técnico.

Seu código demonstra um domínio avançado dos conjuntos (sets) em Python e uma boa noção de organização usando Orientação a Objetos. O uso do método union() foi perfeito para mostrar a visão consolidada das tarefas, que é uma das grandes vantagens de trabalhar com teoria dos conjuntos.

Gostaria de destacar alguns pontos técnicos bem interessantes na sua solução:

  • Poder dos Sets: Ao usar conjuntos, você garante automaticamente que não existam tarefas duplicadas na união das equipes, o que é ideal para gerenciar procedimentos.
  • Encapsulamento: Organizar a lógica dentro de uma classe Alteratudo e utilizar o bloco if __name__ == '__main__': são ótimas práticas de desenvolvimento profissional, facilitando a reutilização e manutenção do código.
  • Lógica de Fluxo: O uso do método erro() isolado é uma forma inteligente de manter o código principal mais limpo e legível.

Complementando seu aprendizado:

Apenas um detalhe técnico importante: como o item "testar sistema" está presente em ambos os conjuntos (Equipe A e Equipe B), ao usar a estrutura if...elif, o seu código removerá o item apenas da Equipe A, pois a condição será satisfeita no primeiro bloco e o elif será ignorado.

Se a intenção for remover de ambos os locais simultaneamente caso a tarefa seja compartilhada, você poderia alterar para dois if separados:

if self.remove in self.equipe_a:
    self.equipe_a.remove(self.remove)
    print(f"\n'{self.remove}' removido da equipe A")

if self.remove in self.equipe_b:
    self.equipe_b.remove(self.remove)
    print(f"\n'{self.remove}' removido da equipe B")

Além disso, para lidar com a diferença entre maiúsculas e minúsculas no input, você pode usar o método .lower() ou .strip() para evitar que o usuário caia no erro por causa de um espaço extra ou uma letra maiúscula.

Continue com essa energia e parabéns novamente pelo pódio no hackathon!

Espero que possa ter lhe ajudado!