1
resposta

Corrigindo posições na lista de uma corrida de atletismo

import msvcrt, os

def limpar_tela() -> None:
    os.system("cls")

def pausa_limpa(texto) -> None:
    print()
    print(texto)
    print("Aperte uma tecla para continuar", end="", flush=True)
    msvcrt.getch()
    limpar_tela()

def main():
    lista_de_nomes = ["Ana", "Carlos", "Pedro"]
    while True:
        entrada = input("Digite o nome incorreto ou 's' para sair: ")

        if entrada.casefold() in ["s", "sair"]:
            pausa_limpa("Fim do programa.")
            break

        try:
            nome_incorreto = validar_string(entrada)
        except(ValueError, TypeError) as e:
            pausa_limpa(f"Entrada inválida: {e}")
            continue

        if nome_incorreto not in lista_de_nomes:
            pausa_limpa("O nome não está na lista")
            continue

        while True:
            nome = input("Digite o nome correto: ")

            try:
                nome_correto = validar_string(nome)
            except(ValueError, TypeError) as e:
                pausa_limpa(f"Entrada inválida: {e}")
                continue

            
            
            indice = lista_de_nomes.index(nome_incorreto)
            lista_de_nomes[indice] = nome_correto

            # ou
            # lista_de_nomes.remove(nome_incorreto)
            # lista_de_nomes.insert(indice, nome_correto)

            print(f"Lista final: {(", ".join(lista_de_nomes))}")
            pausa_limpa("Nome atualizado com sucesso.")
            break
        

def validar_string(nome: str) -> str:   
    if not isinstance(nome, str) or nome.isdigit():
        raise TypeError("O nome deve ser uma string.")
    if not nome.strip():
        raise ValueError("O nome não pode estar vazio.")
    return nome.strip().title()

main()
1 resposta

Olá, Rafaela! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de funções para organizar melhor o fluxo do programa, utilizou muito bem o tratamento de exceções para garantir entradas válidas e ainda compreendeu a importância da manipulação de listas para atualizar os dados de forma dinâmica.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é aplicar f-strings de maneira mais enxuta ao imprimir listas, evitando problemas de sintaxe. Assim:

print(f"Lista final: {', '.join(lista_de_nomes)}")

Isso faz com que os elementos da lista sejam exibidos corretamente em uma única linha, sem erros de formatação.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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