tudo certo pessoal?
estou fazendo o projeto da formação de python orientado a objetos e estou implementando o que foi ensinado no curso 2 ao que foi feito no curso 1, porém eu adicionei algumas camadas de proteção contra usuário e deixei o sistema mais userfriendly. Agora ao errar o nome do restaurante para avaliar, ao invés do programa jogar o usuário novamente para a página inicial ele permite o usuário tentar novamente ou sair, funciona, porém perfebi um bug que quando, depois de errar um nome, ao tentar sair do programa ele entra em loop na função de saida. aqui o código da função
def avaliar_restaurante():
'''avalia o restaurante'''
exibir_subtitulos('Avaliar restaurante')
nome_restaurante = input('Digite o nome do restaurante que deseja avaliar: ').lower()
for restaurante in Restaurante.restaurantes:
if restaurante._nome.lower() != nome_restaurante:
print(f'Restaurante {nome_restaurante} não encontrado.\n')
tentar_novamente2 = input('Tentar novamente? (S/N) ')
if tentar_novamente2.lower() == 's':
avaliar_restaurante()
else:
voltar_para_menu()
else:
try:
nome_cliente = input('Digite seu nome: ')
nota = float(input('Digite a nota (0 a 5): '))
comentario = input('Digite um comentário (opcional): ')
restaurante.receber_avaliacao(nome_cliente, nota, comentario)
print(f'Avaliação registrada com sucesso para o restaurante {restaurante._nome}!\n')
except ValueError as e:
print(f'Erro ao registrar avaliação: {e}\n')
tentar_novamente1 = input('Tentar novamente? (S/N) ')
if tentar_novamente1.lower() == 's':
avaliar_restaurante()
else:
voltar_para_menu()
break
voltar_para_menu()
imagino que o erro seja usar o loop for ao invés de while, alguém pode me dar uma opinião?