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 FINAL)

PARTE FINAL


           elif opcao_usuario == 5:

                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 excluir: ").title()

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

                        Equipe_selecionada.componentes.remove (Componente (nome_integrante))
                        print (f"\nO integrante {nome_integrante} foi excluído com sucesso da equipe {nome_equipe}!")
                        confirmador()

                    else:

                        print ("\nErro, este integrante não está cadastrado nesta equipe. Por favor, tente novamente")
                        confirmador()
                
                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()

            elif opcao_usuario == 6:

                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()
                    posicao_integrante = int (input ("Digite a posição que deseja colocar o integrante: "))

                    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:

                        if posicao_integrante < 1 or posicao_integrante > len (Equipe_selecionada.componentes) + 1:

                            print ("\nErro, a posição digitada é inválida. Por favor, tente novamente")
                            confirmador()

                        else:

                            confirmacao = input (f"Essa posição {posicao_integrante} pertence ao {Equipe_selecionada.componentes[posicao_integrante - 1].nome}. Continuar com a substituição? (S / qualquer outra tecla para cancelar): ").upper()

                            if confirmacao == "S":

                                Equipe_selecionada.componentes.remove (Equipe_selecionada.componentes[posicao_integrante - 1])
                                Equipe_selecionada.componentes.insert (posicao_integrante - 1, Componente (nome_integrante))
                                print (f"\nO integrante {nome_integrante} foi adicionado com sucesso à equipe {nome_equipe} na posição {posicao_integrante}!")
                                confirmador()

                            else:

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

            elif opcao_usuario == 7:

                print ("\nObrigado por utilizar nossos sistemas. Até mais!")
                break

            else:

                print ("\nOpção inválida. Por favor, tente novamente.")
                confirmador()


        except ValueError:

            print ("\nDigite um número válido. Por favor, tente novamente.")
            confirmador()


if __name__ == "__main__":

    main()

Nota: Peço perdão pela resposta longa. Acabou que o main ficou muito longo por causa das validações, como caso não tivesse uma equipe, o que deveria acontecer, etc. Isso fez com que eu demorasse na elaboração das respostas também -- foram 1h45 só nesse exercício, e ainda com a ajuda do Copilot. Nos próximos vou tentar diminuir as validações para não ficar tão massante e longo. O propósito do curso é treinar mais listas do que classes, e percebi que estou dando ênfase no conceito errado. Meio que eu estava criando um aplicativo para cada exercício, sabe? ksksks

Mais uma vez, peço perdão pelo erro e tentarei dminuir nos próximos exercícios. Abraços aos monitores e desculpa pelo trabalho extra S2

1 resposta

Oi, Victor. Tudo bem com você?

Obrigado por compartilhar a continuação do projeto e também por explicar seu raciocínio durante o desenvolvimento. Não há motivo para pedir desculpas pelo tamanho da resposta. É comum aproveitarmos exercícios para praticar outros conceitos que estamos estudando, e isso faz parte do processo de aprendizagem. Seu projeto demonstra que você buscou aplicar listas, classes, validações e organização do código em um mesmo contexto, o que acaba proporcionando bastante prática.

Na sua opinião, quais vantagens e desafios você percebeu ao resolver o mesmo problema utilizando uma estrutura orientada a objetos em vez de uma implementação mais simples com listas?

Parabéns pelo empenho e pela dedicação durante o exercício. Continue compartilhando suas soluções. O fórum está à disposição para acompanhar sua evolução e discutir diferentes abordagens.

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