Olá! Eu tenho uma dúvida em relação a avalição.
Quando aparece no terminal, mostra a seguinte mensagem:
Eu não consigo achar o motivo pelo qual a avaliação não aparece em números. Vocês poderiam me ajudar? Obrigado!
Olá! Eu tenho uma dúvida em relação a avalição.
Quando aparece no terminal, mostra a seguinte mensagem:
Eu não consigo achar o motivo pelo qual a avaliação não aparece em números. Vocês poderiam me ajudar? Obrigado!
Pedro, nesse caso, voce pode usar o def __str__(self):
para imprimir a classe, e adicionar todos os itens dessa classe a uma lista dessa forma:
class Comidas:
lista = []
def __init__(self, nome, tipo):
self._nome = nome
self._tipo = tipo
self._ava = [] # Lista para armazenar avaliações
Comidas.lista.append(self) # Adiciona a comida à lista global
def __str__(self):
return f'{self._nome} | {self._tipo} | Média: {self.media()}'
def receber(self, cliente, nota):
avaliacao = Avaliacao(cliente, nota)
self._ava.append(avaliacao)
def media(self):
if not self._ava:
return 0
soma = sum(avaliacao.nota for avaliacao in self._ava)
quantidade = len(self._ava)
total = round(soma / quantidade, 1)
return total
Esse metodo permite com que você imprima uma classe sempre que der um print() nela, e depois você pode fazer uma função para imprimir todos os itens dessa lista de classe, assim:
# Chamando a função retornar para imprimir as comidas
def retornar():
for comida in Comidas.lista:
print(comida)
E assim ficaria o codigo completo:
class Avaliacao:
def __init__(self, cliente, nota):
self.cliente = cliente
self.nota = nota
class Comidas:
lista = []
def __init__(self, nome, tipo):
self._nome = nome
self._tipo = tipo
self._ava = [] # Lista para armazenar avaliações
Comidas.lista.append(self) # Adiciona a comida à lista global
def __str__(self):
return f'{self._nome} | {self._tipo} | Média: {self.media()}'
def receber(self, cliente, nota):
avaliacao = Avaliacao(cliente, nota)
self._ava.append(avaliacao)
def media(self):
if not self._ava:
return 0
soma = sum(avaliacao.nota for avaliacao in self._ava)
quantidade = len(self._ava)
total = round(soma / quantidade, 1)
return total
# Exemplo de uso
Pizza = Comidas('Pizza', 'Italiana')
Pizza.receber('Pedro', 10)
Pizza.receber('Marilia', 7)
Pizza.receber('Felipe', 5)
# Chamando a função retornar para imprimir as comidas
def retornar():
for comida in Comidas.lista:
print(comida)
# Executa a função
retornar()
Muito obrigado, Gabriel, funcionou!