1
resposta

Resolução da atividade 02.

restaurante.py ///////////////

from modelos.avaliacao import Avaliacao

class Restaurante:
restaurantes = []

def __init__(self, nome, categoria):
    self._nome = nome.title()
    self._categoria = categoria.upper()
    self._ativo = False
    self._avaliacao = []
    Restaurante.restaurantes.append(self)

def __str__(self):
    return f'{self._nome} | {self._categoria}'

@classmethod
def listar_restaurantes(cls):
    print(f'{"Nome do restaurante".ljust(25)} | {"Categoria".ljust(25)} | {"Avaliação".ljust(25)} | {"Status"}')
    for restaurante in cls.restaurantes:
        print(f'{restaurante._nome.ljust(25)} | '
              f'{restaurante._categoria.ljust(25)} | '
              f'{str(restaurante.media_avaliacoes).ljust(25)} | '
              f'{restaurante.ativo}')

@property
def ativo(self):
    return '⌧' if self._ativo else '☐'

def alternar_estado(self):
    self._ativo = not self._ativo

def receber_avaliacao(self, cliente, nota):
    # Aceita apenas notas entre 0 e 5
    if 0 <= nota <= 5:
        avaliacao = Avaliacao(cliente, nota)
        self._avaliacao.append(avaliacao)
    else:
        print("Erro: a nota deve estar entre 0 e 5.")

@property
def media_avaliacoes(self):
    if not self._avaliacao:
        return "Sem avaliações"
    
    soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
    quantidade_de_notas = len(self._avaliacao)
    media = round(soma_das_notas / quantidade_de_notas, 1)
    return media
    

exemplo de uso //////////////////////////////

restaurante = Restaurante("Pizza Boa", "Italiana")

restaurante.receber_avaliacao("João", 4.7)
restaurante.receber_avaliacao("Maria", 5)
restaurante.receber_avaliacao("Pedro", 8) # vai dar erro

Restaurante.listar_restaurantes()

1 resposta

Olá, Luiz! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para implementar os restaurantes com Python, utilizou muito bem o decorador @property para controlar atributos de forma elegante e ainda compreendeu a importância dos métodos de classe para listar e organizar os registros.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!