2
respostas

[Dúvida] DÚVIDA

QUANDO EU COLOCO A OPÇÃO 2 QUE É LISTAR RESTAURANTE, SÓ APARECE O ÚLTIMO NOME DO RESRAURANTE: PINGA SABOR.

import os

restaurantes = [{'nome': 'sabor do mar', 'categoria': 'frutos do mar', 'ativo': True, 'nome': 'pizzaoio', 'categoria': 'pizza', 'ativo': True, 'nome': 'pinga sabor', 'categoria': 'comida caseira', 'ativo': False}]

def finalizar_app(): exibir_titulo('Finalizando o App')

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

def opção_invalida(): print('Opção invalida \n') voltar_ao_menu_principal()

def exibir_titulo(texto): os.system('cls') print(texto) print('\n')

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

def exibir_opcoes(): print('1. Cadastrar Restaurante') print('2. listar Restaurantes') print('3. Ativar Restaurante') print('4. Sair\n')

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

def listar_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() main()

def escolher_opcao(): try: opcao = int(input('Escolha uma opção: ')) if opcao == 1: cadastrar_novo_restaurante() elif opcao == 2: listar_restaurantes() elif opcao == 3: print('Ativar Restaurante') elif opcao == 4: finalizar_app() else: opção_invalida() except: opção_invalida()

def main(): os.system('cls') nome_do_programa() exibir_opcoes() escolher_opcao()

if name == 'main': main()

2 respostas

Opa, Boa tarde!

Vc ta usando a mesma chave 'nome' várias vezes dentro de um único dicionário, então somente o último valor vai ser armazenado. No python, todas as chaves de um dicionário devem ser únicas.

Tenta assim:

restaurantes = [
    {'nome': 'sabor do mar', 'categoria': 'frutos do mar', 'ativo': True},
    {'nome': 'pizzaoio', 'categoria': 'pizza', 'ativo': True},
    {'nome': 'pinga sabor', 'categoria': 'comida caseira', 'ativo': False}
]

Cada restaurante é um dicionário separado dentro da lista de restaurantes, agora vc consegue listar todos eles.

Tenho esse mesmo problema, no meu caso aparece apenas o primeiro restaurante listado....tentei de tudo, inclusive a sugestão acima e não funcionou