Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro após cadastrar Restaurante. Opção Inválida

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Após executar o programa e cadastrar um restaurante e pedir para lista-lo ele acaba me retornando a mensagem de Opção Inválida.

Segue abaixo meu código:

import os 
lista_restaurantes = [{'nome':'Pizzaria Planeta', 'categoria':'Pizzaria', 'ativo':False}, {'nome':'Royal Smash Burguer',  'categoria':'Hamburgueria', 'ativo':True}]

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

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

def finalizar_app():
    os.system('cls')
    print('Finalizando o app') 

def opcao_invalida():
    print('Opção Inválida\n')
    input('Digite uma tecla para voltar ao menu\n')
    main()
#Match case == Switch case nas outras linguagens 

def cadastrar_restaurante():
    os.system('cls')
    nome_restaurante = input('Digite o nome do restaurante: \n')
    categoria = input(f'Digite a categoria do restaurante {nome_restaurante}: \n')
    dados_restaurante = [{'nome':nome_restaurante,'categoria':categoria,'ativo':False}]
    lista_restaurantes.append(dados_restaurante)
    print(f'Restaurante {nome_restaurante} cadastrado com sucesso!\n')
    exibir_opcoes()
    escolher_opcao()

def listar_restaurantes():
    os.system('cls')
    for restaurante in lista_restaurantes:
        nome_restaurante = restaurante['nome']
        print(f'. {nome_restaurante}')
    exibir_opcoes()
    escolher_opcao()

def escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        print(f'Você escolheu a opção: {opcao_escolhida}') 
        if opcao_escolhida == 1:
            cadastrar_restaurante()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
            print('Clique aqui para ativar seu restaurante')
        elif opcao_escolhida == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except: 
        opcao_invalida()        

def main():
    exibir_nome()
    exibir_opcoes()
    escolher_opcao()

if __name__ == '__main__':
    main()
3 respostas

será que está caindo na except? coloque um print embaixo de except para podermos entender melhor o que está acontecendo, e se o código está caindo no except

Opa Arthur, é exatamente isso, coloquei o print antes de entrar na função e ele está caindo exatamente no Except. Vou tentar arrumar aqui e volto aqui para dar um retorno

solução!

Encontrei o porque disso por aqui, na função cadastrar_restaurante

def cadastrar_restaurante():
    os.system('cls')
    nome_restaurante = input('Digite o nome do restaurante: \n')
    categoria = input(f'Digite a categoria do restaurante {nome_restaurante}: \n')
    dados_restaurante = [{'nome':nome_restaurante,'categoria':categoria,'ativo':False}]
    lista_restaurantes.append(dados_restaurante)
    print(f'Restaurante {nome_restaurante} cadastrado com sucesso!\n')
    exibir_opcoes()
    escolher_opcao()

Na linha de dados_restaurante eu sem querer passei uma lista de Dicionários ao botar um colchete sem querer, no momento em que tirar os colchetes ele deu certo

def cadastrar_restaurante():
    os.system('cls')
    nome_restaurante = input('Digite o nome do restaurante: \n')
    categoria = input(f'Digite a categoria do restaurante {nome_restaurante}: \n')
    dados_restaurante = {'nome':nome_restaurante,'categoria':categoria,'ativo':False} #<---- Linha de alteração 
    lista_restaurantes.append(dados_restaurante)
    print(f'Restaurante {nome_restaurante} cadastrado com sucesso!\n')
    exibir_opcoes()
    escolher_opcao()

Muito obrigado pela ajuda Arthur