2
respostas

[Dúvida] Nao aparece o input da categoria, e nao aparece os novos rest na lista, dando Opçao invalida

import os

restaurantes = [{'nome': 'Honkan', 'categoria': 'Japonesa', 'ativo': False},
                {'nome': 'Dominos', 'categoria': 'Pizza', 'ativo': True},
                {'nome': 'Spolleto', 'categoria': 'Italiano', '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('Finalizar app')


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')
    nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastrar: ')
    categoria = input(f'Digite o nome da categoria do restaurante {nome_do_restaurante}:')
    dados_do_restaurante = {'nome':nome_do_restaurante, 'categoria':categoria, 'ativo':False}
    restaurantes.append(dados_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_do_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = restaurante['ativo']
        print(f'- {nome_do_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()
2 respostas

Olá Rhagie! Como vai?

Testando o código que você compartilhou não identifiquei nenhum problema, então peço que veja os pontos que deixei a seguir para verificar e refletir sobre o seu projeto.

  1. Input da Categoria: pelo que você descreveu, o input para a categoria não está aparecendo, mas olhando para o código, parece que ele está corretamente posicionado dentro da função cadastrar_novo_restaurante(). Certifique-se de que você está executando a opção correta no menu principal para cadastrar um novo restaurante (opção 1).

  2. Novos Restaurantes na Lista: se os novos restaurantes não estão aparecendo na lista, pode ser que o programa não esteja salvando os dados corretamente ou que a função listar_restaurantes() não esteja sendo chamada corretamente. No seu código, a função listar_restaurantes() parece estar correta, então verifique se, após cadastrar um novo restaurante, você está realmente escolhendo a opção 2 para listar os restaurantes.

  3. Opção Inválida: se está aparecendo "Opção inválida", pode ser que o valor digitado não esteja sendo reconhecido como um número inteiro. Certifique-se de que está digitando apenas números ao escolher uma opção no menu.

Espero ter ajudado e bons estudos!

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

Mto obg pela resposta Armano. Ao reiniciar o VS, o programa funcionou normalmente.