Menu eletrônico em Python

17/04/2023

0

Boa tarde!

Estou criando um menu eletrônico em Python e estou com algumas dificuldades.

Preciso utilizar classes e funções para listas de pratos de um restaurante, contendo os atributos nome, descrição, imagem e valor. A quantidade de pratos é infinita, então pra isso tive a ideia de colocar a opção de adicionar pratos, consigo adiciona-los e esses adicionados aparecem no final, mas os já adicionados não e além disso quero que antes de já perguntar que prato adicionar quero que liste os existentes.

class MenuRest:
def __init__(self, nome, descricao, imagem, valor):
self.nome = nome
self.descricao = descricao
self.imagem = imagem
self.valor = valor

prato1 = MenuRest(''Estrogonofe'', ''Carne cozida ao molho branco'', ''Carne/Arroz'', ''R$35,00'')
prato2 = MenuRest(''Peixe'', ''Salmão grelhado'', ''Salmão fresco grelhado'', ''R$65,00'')
prato3 = MenuRest(''Costela'', ''Costela ao molho barbecue'', ''Costela no molho'', ''R$45,00'')


pratos = []
while True:
nome_prato = str(input(''Qual prato você quer? ''))
if nome_prato == ''fim'':
break
prato_existe = next((prato for prato in pratos if prato.nome == nome_prato), None)
if prato_existe:
print(''prato existe: '', prato.nome)
continue
descricao = str(input(''Digite uma descrição: ''))
imagem = str(input(''Digite uma imagem: ''))
valor = str(input(''Digite o valor: ''))
prato = MenuRest(nome_prato, descricao, imagem, valor)
pratos.append(prato)

for prato in pratos:
print(prato.nome, descricao, imagem, valor)

Alguém pode me ajudar?
Grato
Lucas

Lucas

Responder

Post mais votado

18/04/2023

Você criou inicialmente 3 pratos, armazenados nas variáveis prato1, prato2 e prato3. Porém, esqueceu-se de adicioná-los à classe pratos.

pratos.append(prato1)
pratos.append(prato2)
pratos.append(prato3)

Como estas variáveis são temporárias e não são utilizadas para outra finalidade, você pode suprimi-las.

Ao invés de fazer:

prato = MenuRest(nome_prato, descricao, imagem, valor)
pratos.append(prato)

Poderia fazer:

pratos.append(MenuRest(nome_prato, descricao, imagem, valor))

No início ficaria:

pratos.append(MenuRest(''Estrogonofe'', ''Carne cozida ao molho branco'', ''Carne/Arroz'', ''R$35,00''))
pratos.append(MenuRest(''Peixe'', ''Salmão grelhado'', ''Salmão fresco grelhado'', ''R$65,00''))
pratos.append(MenuRest(''Costela'', ''Costela ao molho barbecue'', ''Costela no molho'', ''R$45,00'')))

Arthur Heinrich

Arthur Heinrich
Responder

Mais Posts

07/12/2023

Leticia Lima

Oi,

segue um exemplo de como eu faria.

class MenuRest:
    def __init__(self, nome, descricao, imagem, valor):
        self.nome = nome
        self.descricao = descricao
        self.imagem = imagem
        self.valor = valor

prato1 = MenuRest('Estrogonofe', 'Carne cozida ao molho branco', 'Carne/Arroz', 'R$35,00')
prato2 = MenuRest('Peixe', 'Salmão grelhado', 'Salmão fresco grelhado', 'R$65,00')
prato3 = MenuRest('Costela', 'Costela ao molho barbecue', 'Costela no molho', 'R$45,00')

pratos = [prato1, prato2, prato3]

while True:
    # Exibir a lista de pratos existentes
    print("Pratos existentes:")
    for prato in pratos:
        print(f"{prato.nome} - {prato.descricao} - {prato.imagem} - {prato.valor}")

    nome_prato = input('Qual prato você quer (ou digite "fim" para sair)? ')
    if nome_prato == 'fim':
        break

    # Verificar se o prato já existe na lista
    prato_existe = next((prato for prato in pratos if prato.nome == nome_prato), None)
    if prato_existe:
        print('Prato já existe: ', prato_existe.nome)
        continue

    # Se não existir, adicionar um novo prato
    descricao = input('Digite uma descrição: ')
    imagem = input('Digite uma imagem: ')
    valor = input('Digite o valor: ')
    novo_prato = MenuRest(nome_prato, descricao, imagem, valor)
    pratos.append(novo_prato) 
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar