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

[Dúvida] Dúvida com o uso de exceções

Olá, estava acompanhando o código durante a aula, mas quando executo não funciona a parte da exceção e não entendo o porquê.

import os

def exibir_nome_do_programa():
    print("""
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░  
""")

def exibir_opcoes():
    print('1. Cadastrar restaurante')
    print('2. Listar restaurantes')
    print('3. Ativar restaurante')
    print('4. Sair\n')

def finalizar_app():
    os.system('cls') # Limpa a tela do terminal
    # os.system('clear') 
    print('Finalizando o app')

def opcao_invalida():
    print('Opção inválida.\n')
    print('Digite uma tecla para voltar ao menu inicial. ')
    main()

def escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        # opcao_escolhida = int(opcao_escolhida)
    
        if opcao_escolhida == 1: 
            print('Cadastrar restaurante')
        elif opcao_escolhida == 2: 
            print('Listar restaurantes')
        elif opcao_escolhida == 3: 
            print('Ativar restaurante')
        elif opcao_escolhida == 4: 
            finalizar_app()
        else:
            opcao_invalida()
    except: 
        opcao_invalida()
        
def main():
    os.system('cls')
    exibir_nome_do_programa()
    exibir_opcoes()
    escolher_opcao()

if __name__ == '__main__':
    main()
    
    
1 resposta
solução!

Bom dia Julia! Tudo bem com você?

Testei o seu código e percebi que a exceção está sendo lançada corretamente, mas a mensagem "Opção inválida." não está aparecendo no terminal devido a um pequeno detalhe na função opcao_invalida.

Atualmente, na função opcao_invalida, a mensagem "'Digite uma tecla para voltar ao menu inicial.'" é exibida com a função print(), mas logo em seguida, a função main() é chamada. Como a função main() possui o comando os.system('cls'), o terminal é limpo imediatamente, impedindo que a mensagem "Opção inválida." seja vista pelo usuário.

Para corrigir isso, peço que você use a função input() após exibir a mensagem de "Opção inválida". Isso vai garantir que o terminal espere a interação do usuário antes de limpar a tela. Veja como a função opcao_invalida ficará com essa alteração:

def opcao_invalida():
    print('Opção inválida.\n')
    input('Digite uma tecla para voltar ao menu inicial. ')
    main()

Com essa modificação, o código vai pausar e permitir que o usuário leia a mensagem antes de prosseguir. Depois de salvar essa alteração, execute o arquivo novamente e teste inserindo uma opção inválida, como o número 6, para ver como a mensagem aparece.

Deixo abaixo um GIF apresentando a correção e execução do código:

GIF apresentando a correção e execução do código do estudante

Após realizar essa correção, basta dar continuidade nos estudos seguindo a aula Listas.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado