1
resposta

Opção invalida ao cadastrar um novo restaurante

Bom dia pessoal, tudo bem?

Estou seguindo a trilha do curso de python e me deparei com um erro que até agora não consegui solucionar. Ao criar um dicionário para incluir a categoria quando executo o programa para cadastrar um novo restaurante ele apresenta o erro abaixo:

"Digite o nome do restaurante que deseja cadastrar: Delicia de café Opção Inválida!"

Digite uma tecla para voltar ao menu

Segue meu código para analise, preciso muito de ajuda.

import os

restaurantes = [{'nome': 'Rosca do Rafa', 'categoria': 'Doce', 'ativo': False},
                {'nome': 'Fogazza Ylda', 'categoria': 'Salgado', 'ativo': True}
                {'nome': 'Cantina do Caião', 'categoria': 'Italiana', 'ativo': False}] 



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 finalizar_app():
    exibir_subtitulo('Delicia de Caio finalizado\n')
 
def voltar_ao_menu_principal():
    input('\nDigite uma tecla para voltar ao menu ')
    main()


def opcao_invalida():
    print('Opção Inválida!\n')
    voltar_ao_menu_principal()

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


def cadastrar_novo_restaurante():
    exibir_subtitulo('Cadastro de novos restaurantes\n')
    nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastrar: ')
    restaurantes.append(nome_do_restaurante)
    print(f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso!')
    
    voltar_ao_menu_principal()


def listar_restaurantes():
    exibir_subtitulo('Listando restaurantes')  

    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 escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        # opcao_escolhida = int(opcao_escolhida)

        if opcao_escolhida == 1:
            cadastrar_novo_restaurante()
        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()

Desde já, agradeço pela atenção. Muito obrigado ;)

1 resposta

Olá, Caio, tudo bem?

Testei o seu código e notei apenas a falta de uma vírgula, na segunda linha correspondente a lista restaurantes.

captura de tela do código com  uma seta apontando para a falta da vírgula

Ao corrigir esse erro o código está funcionando normalmente, como mostro no gif abaixo:

gif demonstrando app.py do aluno

Verifique se está tentando inserir o restaurante em outra etapa, o que pode está gerando essa saída de 'Opção Inválida'.

Espero ter ajudado e fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software