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

[Dúvida] Duvida sobre Try

Por que todas as vezes que algo não se lê em meu cosigo aparecem essas referencias
Escolha uma opção: 5
False
<class 'str'>
<class 'int'>

Escolha uma opcão:
principalmente as em negrito ? gostaria de saber a origem do erro pra conseguir concertar quando acontecesse pois não é a primeira vez,acredito ser algum comando "errado" que estou dando se alguém puder explicar agradeçp!

3 respostas
solução!

Olá, Amanda, como vai?

O que está acontecendo é que você escreveu alguns print para testar os valores e tipos de variáveis, e por isso aparecem as linhas em destaque. Repare nesse trecho:

opcao_escolhida = input('Escolha uma opção: ')
print(opcao_escolhida == 1)
print(type(opcao_escolhida))
print(type(1))

O input() sempre retorna uma string, mesmo que o usuário digite apenas números. Então, quando você faz print(opcao_escolhida == 1), está comparando uma string com um número inteiro, e o Python responde False. Na sequência, print(type(opcao_escolhida)) mostra <class 'str'>, porque é texto, e print(type(1)) mostra <class 'int'>, porque 1 é do tipo inteiro.

Se o seu objetivo é apenas validar a escolha, não precisa desses print. Você pode converter o valor logo depois do input, assim:

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

Dessa forma, o Python já entende que a entrada deve ser um número, e a comparação com if opcao_escolhida == 1: vai funcionar corretamente, sem exibir aquelas linhas extras que te confundiram.

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

Fiz a substituição mas continuou dando erro no terminal

PS C:\Users\Computador\Desktop\Sabor Express> python app.py
File "C:\Users\Computador\Desktop\Sabor Express\app.py", line 31
try
^
SyntaxError: expected ':'
PS C:\Users\Computador\Desktop\Sabor Express>

segue o código :

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('opção_invalida!\n')
    input('Digite uma tecla para voltar ao menu principal')
    main()

def escolher_opcao():
    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('escolher 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()

Olá, Amanda, como vai?

O erro está acontecendo porque o try precisa ser escrito com dois pontos no final, da mesma forma que if, for e def. Além disso, dentro do bloco try e except, o código precisa estar identado corretamente.

Um exemplo ajustado do trecho seria:

def escolher_opcao():
    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('escolher restaurante')
        elif opcao_escolhida == 4:
            finalizar_app()
        else:   
            opcao_invalida()
    except:
        opcao_invalida()

Um detalhe importante: no seu código a função foi definida como finalizando_app, mas você chamou finalizar_app. Para que funcione, os nomes precisam ser iguais. Você pode ajustar a função para def finalizar_app(): ou mudar a chamada dentro do if para finalizando_app().

Assim o programa passa a rodar sem esse erro.

Sigo a disposição :)