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

[Dúvida] Erro no momento de rodar o App

Olá, boa noite! Tudo bem?

Estou tentando rodar meu app em python, porém não esta funcionando, podem me ajudar?

Meu diretório: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeO erro que estou recebendo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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)
2 respostas
solução!

Oi Juan,

O erro "ModuleNotFoundError: No module named 'Itens_cardapio'" ocorre porque você está tentando importar diretamente do arquivo sem considerar a estrutura de diretórios.

Correção do Import

Para importar corretamente o módulo que está dentro da pasta "Modelos", você deve usar o caminho completo:

from Modelos.Itens_cardapio import ItemCardapio
tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓

Muito obrigado!