Olá, pessoal!
Na minha resolução eu permiti qualquer nota , criar uma nova propriedade (@property) chamada media_ajustada. A grande vantagem dessa abordagem é que ela não modifica os dados originais (as notas reais), mas calcula um novo valor derivado sempre que é acessada. Usando uma list comprehension com a função min() para criar uma lista temporária de notas ajustadas.
Veja como ficou o código final na classe Restaurante:
class Restaurante:
    # ... (código __init__, etc.)
    @property
    def media_avaliacoes(self):
        """Calcula a média REAL das avaliações do restaurante."""
        if not self._avaliacao:
            return 0
        total = sum(avaliacao._nota for avaliacao in self._avaliacao)
        return round(total / len(self._avaliacao), 1)
    @property
    def media_ajustada(self):
        """Calcula a média com notas ajustadas para um máximo de 5."""
        if not self._avaliacao:
            return 0
        
        # AQUI ESTÁ A LÓGICA PRINCIPAL:
        # Para cada avaliação, pega o menor valor entre a nota e 5.
        # Ex: nota 8 vira 5, nota 3 continua 3.
        notas_ajustadas = [min(avaliacao._nota, 5) for avaliacao in self._avaliacao]
        total_ajustado = sum(notas_ajustadas)
        return round(total_ajustado / len(self._avaliacao), 1)
Para exibir os resultados, atualizei o método listar_restaurantes para mostrar ambas as médias, deixando a diferença clara:
    @classmethod
    def listar_restaurantes(cls):
        """Lista todos os restaurantes cadastrados."""
        header = (
            f'{"Nome do restaurante".ljust(20)} | '
            f'{"Categoria".ljust(20)} | '
            f'{"Média Real".ljust(20)} | '
            f'{"Média Ajustada".ljust(20)} | '
            f'{"Status"}'
        )
        print(header)
        for restaurante in cls.restaurantes:
            nome = restaurante._nome.ljust(20)
            categoria = restaurante._categoria.ljust(20)
            media_real = str(restaurante.media_avaliacoes).ljust(20)
            media_ajustada = str(restaurante.media_ajustada).ljust(20)
            print(f'{nome} | {categoria} | {media_real} | {media_ajustada} | {restaurante.ativo}')
Saída:
Listagem inicial dos restaurantes:
Nome do restaurante  | Categoria            | Média Real           | Média Ajustada       | Status
Restaurante A        | ITALIANA             | 6.5                  | 4.0                  | ❌
Restaurante B        | CHINESA              | 5.5                  | 4.5                  | ❌
Restaurante C        | JAPONESA             | 6.0                  | 4.0                  | ❌
Listagem após alterar status:
Nome do restaurante  | Categoria            | Média Real           | Média Ajustada       | Status
Restaurante A        | ITALIANA             | 6.5                  | 4.0                  | ✅
Restaurante B        | CHINESA              | 5.5                  | 4.5                  | ❌
Restaurante C        | JAPONESA             | 6.0                  | 4.0                  | ✅
 
             
             Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!