1
resposta

código entra em False <class 'str'> <class 'int'> e não roda no terminal como deveria

import os
# Trecho de código suprimido
print ('hello word')
print('Sabor Express')
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 finalizando_app ():
     os.system('cls')
     print('finalizando app')

def opcao_invalida():
    print('opcao_invalida!\n')
    input('Digite uma tecla para voltar ao menu principal')
    main()



def escolher_opcao():
    opcao_escolhida = input('Escolha uma opção: ')
    print(opcao_escolhida == 1)
    print(type(opcao_escolhida))
    print(type(1))
    opcao_escolhida = int(input('Escolha uma opcã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('escolher restaurante')
    elif opcao_escolhida == 4:
        finalizando_app()
    else:   
        opcao_invalida()

def main():
    os.system('cls')
    exibir_nome_do_programa()
    exibir_opcoes()
    escolher_opcao() # type: ignore

if __name__ == '__main__':
        main()

aparece :


         ░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗  
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝  
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░  
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗  
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝  
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░  

1. Cadastrar restaurante
2. Listar restaurantes
3. Ativar restaurante
4. Sair

Escolha uma opção: 5
False
<class 'str'>
<class 'int'>
Escolha uma opcão:
1 resposta

Olá, Amanda, como vai?

O comportamento que você viu acontece porque o input() em Python sempre retorna uma string. No trecho em que você faz print(opcao_escolhida == 1), a comparação está entre uma string (o que o usuário digitou) e um número inteiro, por isso o retorno é False. Depois você converte novamente o valor para inteiro com int(input(...)), e aí sim consegue comparar corretamente com if opcao_escolhida == 1:.

Basta remover o primeiro input e os prints e tudo deve funcionar normalmente:

def escolher_opcao():
    opcao_escolhida = int(input('Escolha uma opcão: '))

    if opcao_escolhida == 1:
        print('cadastrar restaurante')
    elif opcao_escolhida == 2:
        print('listar restaurantes')
    elif opcao_escolhida == 3:
        print('escolher restaurante')
    elif opcao_escolhida == 4:
        finalizando_app()
    else:   
        opcao_invalida()

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

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