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

[Bug] Alguem pode me ajudar, código só exibe o primeiro da lista, e não sei oq fiz de errado

import os
#lista de restaurantes
restaurantes = [{'nome':'Praça', 'categoria':'Japonesa', 'ativo':False}, 
                    {'nome':'Pizza Superma', 'categoria':'Pizza', 'ativo':True},
                    {'nome':'Cantina', 'categoria':'Italiano', 'ativo':False}]

#titulo
def exibir_nome_do_programa():
    print('''
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░
      ''')

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

#menu do usuario
def exibir_opcoes():
    print("1. Cadastrar restaurante")
    print("2. Listar restaurantes")
    print("3. Ativar restaurantes")
    print("4. Sair\n")

#Pra encerrar o aplicativo
def finalizar_app():
    exibir_subtitulo("Encerrando o programa.. ")

def voltar_ao_menu_principal():
     input("\nDigite uma tecla para voltar o menu principal: ")
     main()

def opcao_invalida():
    print("Opção inválida\n")
    voltar_ao_menu_principal()

def cadastrar_restaurante():
    exibir_subtitulo("cadastro de novos restaurantes")
    nome_do_restaurante = input("Digite o nome do restaurante que quer 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()

##usuario escolhe opções
def escolher_opcoes():
    try:
        opcao_escolhida = int(input("Escolha uma opção: "))


        if opcao_escolhida == 1:
           cadastrar_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_opcoes()
    
if __name__ == "__main__":
    main()

Retorno do código é: Listando Restaurantes!

-> Praça | Japonesa |False

Digite uma tecla para voltar o menu principal:

2 respostas
solução!

Olá Rafael! Como vai?

Ao analisar o seu código, a função listar_restaurantes() está corretamente configurada para iterar sobre todos os itens da lista restaurantes e exibir cada um deles.

Uma possível razão para o comportamento que você está observando pode estar relacionada ao ambiente em que o código está sendo executado, ou talvez a função os.system("cls") esteja limpando a tela antes de você conseguir ver todos os resultados.

Para testar, você pode comentar a linha os.system("cls") na função exibir_subtitulo e ver se isso resolve o problema:

def exibir_subtitulo(texto):
    # os.system("cls")  # Comente esta linha
    print(texto)
    print()

Outra coisa que você pode verificar é se o código está sendo interrompido antes de exibir todos os restaurantes, mas isso não parece ser o caso aqui.

Espero que isso ajude a resolver o problema. Bons estudos!

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

cara eu não sei até agr oq era, mas após eu reinicar o vscode algumas vezes ele voltou a funcionar, vai entender né kkkkkk mas vlw mt obg