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

[Dúvida] Porque não tá rodando?

eu tava fazendo aqui e antes mesmo de dar try except deu erro,
eu to aprendendo java, to achando python muito solto pro meu gosto, além da chatice de indentação

import os

def exibe_nome_programa():
    print("=== SABOR EXPRESS ===")

def finalizar_app():
    print("Encerrando Aplicação\n")

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


def exibe_verifica_opcoes_programa():          
    print("1. Cadastrar Restaurante")  
    print("2. Listar Restaurantes")    
    print("3. Ativar Restaurante")     
    print("4. Sair")

opcao_escolhida = int(input("Escolha uma opção: "))

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()

def main():
    exibe_nome_programa()
    exibe_verifica_opcoes_programa()

if __name__ == "__main__":
    main()
2 respostas
solução!

Oi! possivelmente o motivo é erro de identação. Em python, como não usamos chaves, colocamos os : seguindo na próxima linha com um "tab" pra identar o código. Sabemos que um código está dentro de algo a partir desses espaços. Aparentemente sua variável "opcao_escolhida" está fora da função "exibe_verifica_opcoes_programa()". O ideal é identar o código para tudo funcionar do jeito correto!
Exemplo:

#Errado, a linha de opcao_escolhida está fora da função
def exibe_verifica_opcoes_programa():          
    print("1. Cadastrar Restaurante")  
    print("2. Listar Restaurantes")    
    print("3. Ativar Restaurante")     
    print("4. Sair")

opcao_escolhida = int(input("Escolha uma opção: "))

#Correto, a variável opcao_escolhida agora está dentro da função
def exibe_verifica_opcoes_programa():          
    print("1. Cadastrar Restaurante")  
    print("2. Listar Restaurantes")    
    print("3. Ativar Restaurante")     
    print("4. Sair")

    opcao_escolhida = int(input("Escolha uma opção: "))

Olá colega! Tudo bem?

Tomei como desafio analisar o seu código e ajuda-lo, identifiquei que o comportamento inesperado ocorre porque a leitura da opção escolhida está sendo executada fora da função main(). Dessa forma, o input() é chamado antes mesmo do menu ser exibido corretamente.

Execução do código antes de atualizar

Uma forma de organizar melhor o fluxo do programa é:

  • Criar uma função específica para tratar a opção escolhida;
  • Chamar essa função dentro da main();
  • Garantir que toda a execução do programa aconteça a partir da main().

Eu fiz a seguinte modificação:

  • Criei uma função chamada opcao_escolhida() para centralizar a lógica do input e dos if/elif;
  • Passei a chamá-la dentro da função main();
  • Adicionei um try/except para evitar que o programa quebre caso o usuário digite algo que não seja número;
  • Incluí um comando para limpar a tela antes de exibir o menu, deixando a execução mais organizada.

Dessa forma, o fluxo do programa fica mais estruturado e evita erros de execução fora da ordem esperada.

O código atualizado:

import os


def exibe_nome_programa():
    print("=== SABOR EXPRESS ===")


def finalizar_app():
    print("Encerrando Aplicação\n")


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


def exibe_verifica_opcoes_programa():          
    print("1. Cadastrar Restaurante")  
    print("2. Listar Restaurantes")    
    print("3. Ativar Restaurante")     
    print("4. Sair")


def opcao_escolhida():
    try:
        opcao_escolhida = int(input("Escolha uma opção: "))

        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')
    exibe_nome_programa()
    exibe_verifica_opcoes_programa()
    opcao_escolhida()


if __name__ == "__main__":
    main()

Execução do código já atualizado