3
respostas

Listando restaurante

Pessoal, boa tarde!

Estou tentando listar os restaurantes 1 embaixo de outro conforme está no curso, no entanto aparece os dois restaurantes que cadastrei, só que aparece 1 e o segundo só aparece depois da frase que coloquei "Digite uma tecla para voltar ao menu principal:" e no final aparece novamente a mensagem Digite uma tecla para voltar ao menu principal:

Obrigado

import os

restaurantes =['Polenta','Macarrão']

restaurantes = [] é uma lista.

#Lista é onde será armazenado todos os dados de cada menu, por exemplo.# def exibir_nome_do_programa(): print(""" ░██████╗░█████╗░██████╗░░█████╗░██████╗░███████╗░██████╗  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗ ██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝ ╚█████╗░███████║██████╦╝██║░░██║██████╔╝█████╗░░╚█████╗░  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░ ░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗██╔══╝░░░╚═══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗ ██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║███████╗██████╔╝  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝ ╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚═════╝░  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░""")

def exibir_opcoes(): print("1. Cadastrar restaurante:") print("2. Listar restaurante:") print("3. Ativar restaurante:") print("4. Sair:\n")

def finalizar_app(): os.system('cls') print("Finalizando app\n") # def é de definir uma função no Python# # função é que um bloco de instrução que vai realizar uma ação no momento que a chamarmos#. def opcao_invalida(): print('Opção inválida!\n') input('Digite uma tecla para voltar ao menu: ') main()

def cadastrar_novo_restaurante(): os.system('cls') print('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!') input('Digite uma tecla para voltar ao menu principal.') main() #append é uma função para que os novos nomes dos restaurantes seja armazenado na lista.# #append(nome_do restaurante) é um argumento para que seja armazenado na lista os novos nomes do restaurante.#

def listar_restaurantes(): os.system('cls') print('Listando os restaurantes: \n') for restaurante in restaurantes: print(f"{restaurante}") input('\nDigite uma tecla para voltar ao menu principal: ') main()

def escolher_opcao():

        try:

            # try e except é uma forma de fazer o teste se o usuário está digitando as seleções dos menus corretamente.
            # Caso digite um número ou letra que não corresponde ao menu aparecerá opção inválida.
            # try é digite um número inteiro
            # except caso não seja digitado um número inteiro, ou seja, que seja digitado uma letra ou simbolo qualquer,
            #aparecerá opcão inválida.
            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 restaurantes')

            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()

É assim que tem que ficar

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E assim é que fica

3 respostas

Olá, é só recuar as linhas:

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

pois da forma que está atualmente, elas fazem parte do loop do for.

Até mais.

Luciano obrigado pela ajuda! Estou com mais um problema

O problema é que eu estava fazendo a aula 5 Laços de repetição for e não estava codificando e me atrapalhei na indentação e apareceu o erro abaixo.

import os

restaurantes =[]

restaurantes = [] é uma lista.

#Lista é onde será armazenado todos os dados de cada menu, por exemplo.#

def exibir_nome_do_programa(): print(""" ░██████╗░█████╗░██████╗░░█████╗░██████╗░███████╗░██████╗  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗ ██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝ ╚█████╗░███████║██████╦╝██║░░██║██████╔╝█████╗░░╚█████╗░  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░ ░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗██╔══╝░░░╚═══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗ ██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║███████╗██████╔╝  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝ ╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚═════╝░  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░""")

def exibir_opcoes(): print("1. Cadastrar restaurante:") print("2. Listar restaurante:") print("3. Ativar restaurante:") print("4. Sair:\n")

def finalizar_app(): os.system('cls') print("Finalizando app\n") # def é de definir uma função no Python# # função é que um bloco de instrução que vai realizar uma ação no momento que a chamarmos#.

def opcao_invalida(): print('Opção inválida!\n') input('Digite uma tecla para voltar ao menu: ') main()

def cadastrar_novo_restaurante(): os.system('cls') print('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!') input('Digite uma tecla para voltar ao menu principal.') main()

#append é uma função para que os novos nomes dos restaurantes seja armazenado na lista.#
#append(nome_do restaurante) é um argumento para que seja armazenado na lista os novos nomes do restaurante.#

código omitido

def listar_restaurantes(): os.system('cls') print('Listando os restaurantes\n')

for restaurante in restaurantes:
    print(f'.{restaurante}')

input('Digite uma tecla para voltar ao menu principal')
main()

código omitido

def escolher_opcao():

            try:

                # try e except é uma forma de fazer o teste se o usuário está digitando as seleções dos menus corretamente.
                # Caso digite um número ou letra que não corresponde ao menu aparecerá opção inválida.
                # try é digite um número inteiro
                # except caso não seja digitado um número inteiro, ou seja, que seja digitado uma letra ou simbolo qualquer,
                #aparecerá opcão inválida.
                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 restaurantes')

                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()
    

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObrigado

Olá amigo, não entendi muito bem o código postado. Desta forma, vou postar o código funcional para vc ver como ficou.

Não estranhe, pois no final criei uma função para limpar a tela. Como estou utilizando outro sistema operacional, fica mais fácil para manter a compatibilidade.

import os
import platform


restaurantes =['Polenta','Macarrão']

def main(): 
    limpar_tela() 
    exibir_nome_do_programa() 
    exibir_opcoes() 
    escolher_opcao()

def exibir_nome_do_programa(): 
       print("Nome do sistema")

def exibir_opcoes(): 
    print("1. Cadastrar restaurante:") 
    print("2. Listar restaurante:") 
    print("3. Ativar restaurante:") 
    print("4. Sair:\n")

def finalizar_app(): 
    limpar_tela() 
    print("Finalizando app\n")

def opcao_invalida(): 
    print('Opção inválida!\n') 
    input('\nDigite enter para voltar ao menu...') 
    main()

def cadastrar_novo_restaurante(): 
    limpar_tela() 
    print('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!') 
    input('\nDigite enter para voltar ao menu principal...') 
    main() 

def listar_restaurantes(): 
    limpar_tela() 
    print('Listando os restaurantes: \n') 
    for restaurante in restaurantes: 
        print(f"{restaurante}") 
    # linhas recuadas
    input('\nDigite enter para voltar ao menu principal...') 
    main()
    # linhas recuadas

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

    except:
        opcao_invalida()


def limpar_tela():
    if platform.system() == "Windows":
        os.system('cls')
    elif platform.system() in ["Linux", "Darwin"]:
        os.system('clear')
    else:
        print(f"Sistema operacional não reconhecido: {platform.system()} \n" +
              f"A tela não será 'limpada'")    

if __name__ == '__main__': 
      main()

Uma sugestão para postar códigos é digitar 3 símbolos de crase, seu código e finalizar com mais 3 símbolos de crase.

Exemplo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Até mais.