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

Resolução de Atividades - 10 Corrigindo posições na lista de uma corrida de atletismo (PARTE 2)

PARTE 2


Exercicio-N7\main.py


from models.repositorio_equipes import Repositorio_Equipes
from models.equipe import Equipe
from models.componentes import Componente

def exibir_apresentacao():

    """Exibe no console uma apresentação amigável ao usuário"""

    print ("\n\nOlá, seja bem-vindo ao campeonato do clube de atletismo Alura Runners. Como podemos ajudar? \n")

def selecionar_opcoes():

    """Permite o usuário escolher uma opção dentre os serviços disponíveiss"""

    opcao_usuario = input (
        "1 - Cadastrar equipe" \
        "\n2 - Remover equipe" \
        "\n3 - Mostrar a lista de equipes" \
        "\n4 - Adicionar componente a uma equipe" \
        "\n5 - Remover componente de uma equipe" \
        "\n6 - Substituir posição de um componente" \
        "\n7 - Sair; \n Digite o número da opção desejada: ")
    
    return opcao_usuario
    
def confirmador():

    """ Trava o sistema até o usuário digitar uma tecla para que o texto do console não passe muito rápido"""

    input("\nAperte qualquer tecla para continuar")
    print("\n\n\n")

def main():

    while True:

        try:

            exibir_apresentacao()
            
            opcao_usuario = int (selecionar_opcoes())

            if opcao_usuario == 1:

                nome_equipe = input("\nDigite o nome da equipe: ").title()

                if Repositorio_Equipes.buscar_equipe_por_nome (nome_equipe):

                    print ("\nEssa equipe já está cadastrada. Por favor, tente novamente")
                    confirmador()
                
                else:

                    Repositorio_Equipes.adicionar_equipe (Equipe (nome_equipe))
                    print (f"\nA equipe {nome_equipe} foi adicionada com sucesso!")

            elif opcao_usuario == 2:

                nome_equipe = input ("\nDigite o nome da equipe que se deseja excluir: ")

                equipe_selecionada = Repositorio_Equipes.buscar_equipe_por_nome (nome_equipe)

                if not equipe_selecionada:

                    print ("\nErro, esta equipe não existe em nosso banco de dados. Verifique se não houve erros de digitação no nome.")
                    confirmador()

                else:

                    confirmacao = input (f"Deseja realmente deletar a equipe {equipe_selecionada.nome}? (S / qualquer outra tecla para cancelar): ").upper()

                    if confirmacao == "S":

                        Repositorio_Equipes.remover_equipe (equipe_selecionada)

                    else:

                        print ("Cancelando a exclusão. Voltando ao Menu Principal")
                        confirmador()

            elif opcao_usuario == 3:

                Repositorio_Equipes.exibir_lista_equipes()
                confirmador()

            elif opcao_usuario == 4:

                nome_equipe = input("\nDigite o nome da equipe: ").title()

                Equipe_selecionada = Repositorio_Equipes.buscar_equipe_por_nome (nome_equipe)

                if Equipe_selecionada:

                    print ("\nEquipe encontrada\n")

                    nome_integrante = input ("Digite o nome do integrante que deseja adicionar: ").title()

                    if nome_integrante in [componente.nome for componente in Equipe_selecionada.componentes]:

                        print ("\nEste integrante já está cadastrado nesta equipe. Por favor, tente novamente")
                        confirmador()

                    else:

                        Equipe_selecionada.componentes.append (Componente (nome_integrante))
                        print (f"\nO integrante {nome_integrante} foi adicionado com sucesso à equipe {nome_equipe}!")
                
                else:

                    print ("\nErro, esta equipe não existe em nosso banco de dados. Verifique se não houve erros de digitação no nome.")
                    confirmador()
                    
                    
                # [...]
1 resposta

Oi, Victor. Tudo bem com você?

As operações de cadastro, busca de equipes e adição de componentes estão seguindo uma lógica coerente com a estrutura criada anteriormente. Um ponto interessante é a validação usando uma lista de compreensão, como em nome_integrante in [componente.nome for componente in Equipe_selecionada.componentes], pois ela permite verificar rapidamente se um componente já está cadastrado. Como evolução, você poderia futuramente criar métodos dentro da classe Equipe, como adicionar_componente() e remover_componente(), deixando a classe responsável pelo gerenciamento dos seus próprios dados.

Por exemplo, em vez de alterar diretamente Equipe_selecionada.componentes.append(), um método poderia validar regras da equipe antes de adicionar um novo integrante, tornando o código mais organizado.

Como você percebe a divisão de responsabilidades entre as classes e o arquivo principal conforme o projeto foi crescendo?

Parabéns pela dedicação e pela forma como você está explorando diferentes conceitos durante os exercícios. Continue compartilhando suas soluções. O fórum está à disposição para acompanhar sua evolução.

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