Olá, boa noite! Tudo bem?
Estou tentando rodar meu app em python, porém não esta funcionando, podem me ajudar?
Meu diretório: O erro que estou recebendo:
Abaixo colocarei meu código principal: App.py
from Modelos.Bebida import Bebida from Modelos.Prato import Prato from Modelos.Restaurantes import Restaurante
restaurante_pizza = Restaurante(f"Pizza", "Pizzaria", "80406087000130", "121234431256789")
restaurante_dondo = Restaurante("Dondó", "Comida nordestina", "82173441000150", "119080706058")
restaurante_japones = Restaurante("Japonês do amor", "Japonesa", "42468159000185", "1190909005438")
restaurante_dondo.receber_avaliacao("Juan Frois", 5)
restaurante_dondo.receber_avaliacao("Roberto", 2)
restaurante_dondo.receber_avaliacao("Pedro Firmino", 1)
restaurante_japones.alterar_status()
bebida_suco = Bebida('Suco de melancia', 5, 'Grande')
prato_pao = Prato('Pao', 2, 'O melhor pão da cidade')
restaurante_pizza.adicionar_cardapio(bebida_suco) restaurante_pizza.adicionar_cardapio(prato_pao)
def main(): Restaurante.listagem_restaurantes() restaurante_pizza.exibir_cardapio()
if name == 'main': main()
Bebida:
from Itens_cardapio import ItemCardapio
class Bebida(ItemCardapio): def init(self, nome, preco, tamanho): super().init(nome,preco) self._tamanho = tamanho
def __str__(self):
return self._nome
Prato:
from Itens_cardapio import ItemCardapio
class Prato(ItemCardapio): def init(self,nome, preco, descricao): super().init(nome,preco) ##Super é um objeto especial que permite usar informações de outra classe self._descricao = descricao
def __str__(self):
return self._nome
Item cardapio:
class ItemCardapio: def init(self, nome, preco): self._nome = nome self._preco = preco
Restaurante:
from Avaliacao import Avaliacao from Itens_cardapio import ItemCardapio
class Restaurante:
restaurantes = []
def __init__(self, nome, categoria, cnpj, contato):
self._nome = nome.title()
self._categoria = categoria.upper()
self._cnpj = cnpj
self._contato = contato
self._ativo = False
self._avaliacao = []
self._cardapio = []
Restaurante.restaurantes.append(self)
def __str__(self):
return f" {self._nome.ljust} | {self._categoria.ljust} | {self._cnpj} | {self._contato}"
@classmethod
def listagem_restaurantes(cls):
print(f'{"Nome do restaurante".ljust(26)} | {"Categoria".ljust(25)} | {"CNPJ".ljust(25)} | {"Contato".ljust(25)} | {"Avaliações".ljust(25)} | {"Status"}')
for restaurante in cls.restaurantes:
print(f" {restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante._cnpj.ljust(25)} | {restaurante._contato.ljust(25)} | {str(restaurante.media_avaliacoes).ljust(25)} | {restaurante.ativo}")
@property
def ativo(self):
return '☑' if self._ativo else '☐'
def alterar_status(self):
self._ativo = not self._ativo
def receber_avaliacao(self, cliente, nota):
if nota <= 5:
avaliacao = Avaliacao(cliente, nota)
self._avaliacao.append(avaliacao)
@property
def media_avaliacoes(self):
if not self._avaliacao:
return print("O restaurante ainda não possui nenhuma avaliação")
soma_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
quantidade_notas = len(self._avaliacao)
media = round(soma_notas / quantidade_notas, 1)
return media
def adicionar_cardapio(self, item):
if isinstance(item,ItemCardapio):
self._cardapio.append(item)
@property
def exibir_cardapio(self):
print(f'Cardapio do restaurante {self._nome}\n')
for i, item in enumerate(self._cardapio,start=1):
if hasattr(item, 'descricao'):
mensagem_prato = f'{i}. Nome:{item._nome} | Preco: R${item._preco} | Descricao: {item.descricao}'
print(mensagem_prato)
else:
mensagem_bebida = f'{i}. Nome:{item._nome} | Preco: R${item._preco} | Tamanho: {item.tamanho}'
print(mensagem_bebida)