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

DÚVIDA SOBRE O CÓDIGO DA AULA ANTERIOR!

Pessoal, o meu código está dando erro, está dando opção inválida independente da opção que escolho. Conferi com o gabarito disponibilizado e parece o mesmo, tentei rodar o meu e o disponibilizado, e ambos apareceram o mesmo erro. o IA Alura justifica que o erro está com try | except. Poderiam explicar melhor?

Segue o código:

import os
restaurantes = ['Pizza', 'cachorro quente', 'bolinha de queijo', 'milho']

def exibir_nome_do_programa(): 
    print ('Sabor Express\n')

def exibir_opcoes():

    
    print('1. Cadastrar Restaurante')
    print('2. Listar Restaurante')
    print('3. Ativar Restaurante')
    print('4. Sair\n') 

def finalizar_app():
    
   exibir_subtitulo('Finalizando o app')

def voltar_ao_menu_principal():
    input('\nDigite uma tecla para voltar ao menu ')
    main()

def opcao_invalida():
    print('Opção Inválida! \n')
    input('Digite uma tecla para voltar ao menu principal \n')
    main()

def exibir_subtitulo():
    os.system('cls')
    print(texto)
    print()
    
def cadastrar_restaurantes():
    exibir_subtitulo('Cadastro de novos restaurantes \n')
    nome_do_restaurante = input(' Digite o nome do restaurante que você gostaria de cadastrar:')
    restaurantes.append(nome_do_restaurante)
    print( f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso')
    input('Digite uma para voltar ao menu principal')

    voltar_ao_menu_principal()

def listar_restaurantes():
    exibir_subtitulo('Listando os restaurantes \n')

    for restaurante in restaurantes:
        print (f'.{restaurante}')
    
    input('Digite uma tecla para voltar ao menu principal')

    voltar_ao_menu_principal()



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

        if opcao_escolhida == 1: cadastrar_restaurantes() 
        elif opcao_escolhida == 2: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')
        exibir_nome_do_programa()
        exibir_opcoes()
        escolher_opcao()
       
    
if __name__ == '__main__':
    main()
4 respostas

Para ajustar a função exibir_subtitulo() conforme solicitado: antes

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

depois:

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

Além disso, os print() podem ser removidos, pois esta usando a função voltar_ao_menu_principal() para evitar repetições.

Obrigada, mas ainda continuo com dúvida sobre o tema colocado a cima. O erro que aparece sobre o try | except

Primeiro, o programa tenta executar as instruções conforme especificado.Vamos entender o fluxo com um exemplo:

  1. O programa chama a função main().
  2. Dentro de main(), são chamadas três funções: exibir_nome_do_programa(), exibir_opcoes(), e escolher_opcao().
  3. Na função escolher_opcao(), o programa solicita que o usuário escolha uma opção com o seguinte código: opcao_escolhida = int(input('Escolha uma opção: '))
  4. Se o usuário escolhe a opção 2, o if correspondente chamará a função listar_restaurantes().
  5. Quando listar_restaurantes() é chamada, ela invoca outra função: exibir_subtitulo('Listando os restaurantes \n').
  6. Contudo, ao executar exibir_subtitulo(), ocorre um erro porque o texto a ser exibido no print não foi informado corretamente.
  7. Devido a esse erro, a execução do programa é desviada para o bloco except, que captura a exceção e informa ao usuário que ocorreu um erro.
solução!

Entendido entendido! Perfeito, muito obrigada.