2
respostas

[Dúvida] Duvida da aula de dicionarios

import os 

restaurantes = [
                {'nome':'Pizza suprema', 'categoria': 'italiana', 'ativo': False}, 
                {'nome': 'the suhiman', 'categoria': 'japonesa', 'ativo': False},
                {'nome': 'pedaço da bahia', 'catehoria': 'baiana', 'ativo': True}] 

def nome_do_programa():
    print('Sabor Express\n')
 #Vamos criar um menu para cadastrar restaurantes nesse app parecido com ifood

def opcoes_do_programa():
    print('1. Cadastrar Resteurante')
    print('2. Listar resteurante')
    print('3. Ativar Resteurante')
    print('4. Sair\n ')

def cadastrar_novo_restaurante():
    os.system('cls')
    exibir_subtitulo('Cadastrando restaurante')
    nome_restaurante = input('Digite o nome do seu restaurante: ')
    restaurantes.append(nome_restaurante)
    print('\nO restaurante {} foi cadastrado com sucesso' .format(nome_restaurante))
    voltar_ao_menu_principal()

def opcao_invalida():
    print('Opção Invalida')
    voltar_ao_menu_principal()

def finalizar_app():
    os.system('cls') #essa biblioteca com essa funcão limpa o terminal, então quando a opção 4 for a escolhida, ele vai mostar a mensagem com o terminal limpo 
    exibir_subtitulo('Finalizando app  ')

def listar_restaurantes():
    os.system('cls')
    exibir_subtitulo('Listando restaurantes')
    
    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = restaurante['ativo']
        print(f' - {nome_restaurante} | {categoria} | {ativo}')


def escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma das opções acima:'))
        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')
    nome_do_programa()
    opcoes_do_programa()
    escolher_opcao()

def voltar_ao_menu_principal():
    input('\nAperte enter para voltar ao menu principal')
    main()

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

if __name__ == '__main__':
    main()

qual erro estou cometendo? quando executo e seleciono a opção 2, o codigo continua retornando a lista como um todo, e não somento o nome, a categoria e se ele está ativo ou não. ALGUEM ME AJUDA POR FAVOR

2 respostas

Na segunda opção, ele vai retornar como se fosse uma lista:

  • Pizza suprema | italiana | False
  • the suhiman | japonesa | False
  • pedaço da bahia | baiana | True

Se fosse um print só do dicionário diretamente, retornaria desta maneira: {'nome': 'Pizza suprema', 'categoria': 'italiana', 'ativo': False} {'nome': 'the suhiman', 'categoria': 'japonesa', 'ativo': False} {'nome': 'pedaço da bahia', 'categoria': 'baiana', 'ativo': True}

mais ou menos deste jeito.

Uma coisa pode estar errada no {'nome': 'pedaço da bahia', 'catehoria': 'baiana', 'ativo': True}, é 'catehoria', que deve ser corrigido para 'categoria'.

Era isso mesmo muito obrigada, um erro bobo que eu não percebi kkkkkkk