Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Daria para fazer essa atividade com um try antes do while ou não faz sentido?

lista_corredores = ['Ana', 'Carlos', 'Pedro']

print(f"Lista: {lista_corredores}")

while True:

    print("=========Menu=========\n")
    print("1 - Verificar lista.")
    print("2 - Incluir novo nome.")
    print("3 - Alterar nome.")
    print("4 - Encerrar.")
    print("======================\n")
    
    escolha = input("Escolha uma opção:\n")

    if escolha == "1":
        print(f"\n{lista_corredores}\n")

    elif escolha == "2":
        try:
            novo_integrante = input("Digite o nome do(a) novo(a) integrante da lista: ").title()
            posicao_integrante = int(input("Digite a posição que ele entrará: "))
            lista_corredores.insert(posicao_integrante - 1, novo_integrante)
            print(f"{lista_corredores}\n")

        except ValueError:
            print("\nErro: A posição deve ser um número. \n")

    elif escolha == "3":
        nome_na_lista = input("Digite o nome da pessoa que deseja verificar se está na lista: ")
            
        if nome_na_lista in lista_corredores:
            try:
                novo_nome = input(f"Digite o novo nome para colocar no lugar de {nome_na_lista}: ").title()
                posicao_troca = int(input(f"Digite a do nome que deseja alterar: "))
                lista_corredores.remove(nome_na_lista)
                lista_corredores.insert(posicao_troca - 1, novo_nome)
                print(f"{lista_corredores}\n")

            except ValueError:
                print("\nErro: a posição deve ser um número.\n")
        else:
            print("\nO nome não está na lista.\n")

    elif escolha == "4":
        print("\nPrograma encerrado.\n")
        break

    else:
        print("\nErro: escolha uma opção válida (1 a 4).\n")
1 resposta
solução!

Oii, Roberth! Tudo bem?

Excelente iniciativa de criar um menu interativo! Isso mostra que você tá buscando ir além do que foi pedido no exercício, e seu código ficou muito organizado.

Sobre a sua dúvida: faz sentido manter o try dentro do while (como você fez) do que fora dele. Vou te explicar o porquê:

  1. O objetivo do menu: Em um programa assim, queremos que, se o usuário digitar algo errado (como uma letra no lugar de um número), o programa avise o erro e volte para o menu para dar outra chance, certo?
  2. Se o try estiver FORA do while: Caso ocorra um erro, o Python vai pular para o except (que estaria lá fora) e o laço while será interrompido. Ou seja, o programa encerraria ou sairia do menu logo no primeiro erro.
  3. Se o try estiver DENTRO do while (seu código atual): Quando o erro acontece, ele cai no except, mostra a mensagem de erro e, como o while True continua rodando, o menu aparece novamente.

Continue firme nos estudos.

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