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!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!