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

opção invalida

Da opção inválida quando tento listar e quando vou criar um novo restaurante

import os

restaurantes = [{"nome":"Praça", "categoria":"Japonesa", "ativo":False}, 
                    {"nome":"Pizza Superma", "categoria":"Pizza", "ativo":True},
                    {"nome":"Cantina", "categoria":"Italiano", "ativo":False}]


def exibir_nome_do_programa():
    print("""
    ╭━━━╮╱╱╭╮╱╱╱╱╱╱╱╭━━━╮
    ┃╭━╮┃╱╱┃┃╱╱╱╱╱╱╱┃╭━━╯
    ┃╰━━┳━━┫╰━┳━━┳━╮┃╰━━┳╮╭┳━━┳━┳━━┳━━┳━━╮
    ╰━━╮┃╭╮┃╭╮┃╭╮┃╭╯┃╭━━┻╋╋┫╭╮┃╭┫┃━┫━━┫━━┫
    ┃╰━╯┃╭╮┃╰╯┃╰╯┃┃╱┃╰━━┳╋╋┫╰╯┃┃┃┃━╋━━┣━━┃
    ╰━━━┻╯╰┻━━┻━━┻╯╱╰━━━┻╯╰┫╭━┻╯╰━━┻━━┻━━╯
    ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃
    ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯
    
    """)

def exibir_opcao():  
  
    print("1. Cadastrar Restaurantes")
    print("2. Listar Restaurantes")
    print("3. AtivarRestaurantes")
    print("4. Sair\n")

def opcao_invalida():
    print("Opção invalida \n")
    voltar_ao_menu_principal()

def escolher_opcao():
    try:
            opcao_escolhida = int(input("escolha uma opçaõ: "))
            
            match opcao_escolhida:

                 case 1:
                    cadastrar_restaurantes()
                 case 2:
                    listar_restaurantes()
                 case 3:
                    print("ativar restaurantes")
                 case 4:
                    finalizar_app()     
                 case _ : 
                    opcao_invalida() 
    except :
            opcao_invalida()


def cadastrar_restaurantes():
    exibir_subtitulo()
    nome_do_restaurante = input("Digite o nome do restaurante que deseja cadastrar: ")
    categoria = input(f"Digite o nome da categoria do restaurante {nome_do_restaurante}")
    dados_do_restaurante = {"nome":nome_do_restaurante, "categoria":categoria, "ativo":False}
    restaurantes.append(dados_do_restaurante)
    print(f"O restaurante {nome_do_restaurante} foi cadastrado com sucesso!")

    voltar_ao_menu_principal ()   

def listar_restaurantes():
    exibir_subtitulo()
    for restaurante in restaurantes:
        nome_restaurante = restaurante["nome"]
        categoria = restaurante["categoria"]
        ativo = restaurante["ativo"]
        print(f' - {nome_restaurante} | {categoria} | {ativo}')

    voltar_ao_menu_principal()

def finalizar_app():
   exibir_subtitulo("finalizar app!")

def exibir_subtitulo(texto):
     os.system("cls")
     print(texto)
     print()

def voltar_ao_menu_principal():
        input("digite uma tecla para voltar ao menu inicial : \n ")
        main()
 

def  main():
    os.system("cls")
    exibir_nome_do_programa()
    exibir_opcao()
    escolher_opcao()
 


if __name__ == "__main__" :

    main()

2 respostas
solução!

Olá, tudo bem? Pelo o que eu entendi aqui você está esquecendo de passar o parâmetro para exibir o subtítulo e por isso o seu código pode estar caindo no except ao invés de chamar a função cadastrar_restaurantes e listar_restaurantes. Espero que isso resolva o seu problema, caso não estou a disposição para ajuda-la. Bons estudos

def cadastrar_restaurantes(): exibir_subtitulo(falta o paremetro aqui)

def listar_restaurantes(): exibir_subtitulo(falta o paremetro aqui)

Foi isso mesmo, muito obrigada!!!!