Необходимо разработать класс “SalesAnalyzer”, который будет принимать на вход данные о продажах в виде списка словарей. Каждый словарь будет представлять информацию о продаже.
Класс “SalesAnalyzer” должен иметь следующие методы:
1. Метод “describe_sales()”, который будет возвращать общую статистику о продажах.
2. Метод “get_top_by_amount_sales()”, который будет выдавать топ заказов по сумме.
3. Метод “get_sales_by_client()”, который будет выдавать все заказы, которые были совершены данным пользователем.
python
class SalesAnalyzer:
def __init__(self, sales_data):
self.sales_data = sales_data
def describe_sales(self):
pass
def get_top_by_amount_sales(self):
pass
def get_sales_by_client(self, client):
pass
Метод describe_sales:
python
def describe_sales(self):
total_sales = len(self.sales_data)
total_amount = sum([sale['amount'] for sale in self.sales_data])
average_amount = total_amount / total_sales
return {
'total_sales': total_sales,
'total_amount': total_amount,
'average_amount': average_amount
}
Метод get_top_by_amount_sales:
python
def get_top_by_amount_sales(self):
sorted_sales = sorted(self.sales_data, key=lambda x: x['amount'], reverse=True)
top_sales = sorted_sales[:3]
return top_sales
Метод get_sales_by_client:
python
def get_sales_by_client(self, client):
sales_by_client = [sale for sale in self.sales_data if sale['client'] == client]
return sales_by_client
Давайте рассмотрим каждый метод подробнее:
Метод `describe_sales` используется для получения общей статистики о продажах. Он считает общее количество продаж и сумму всех продаж. Затем он вычисляет среднюю сумму продаж, разделив общую сумму продаж на общее количество продаж. Возвращает словарь с общим количеством продаж, общей суммой продаж и средней суммой продаж.
Метод `get_top_by_amount_sales` используется для получения топ-3 заказов по сумме. Сначала список заказов сортируется по сумме заказа в обратном порядке. Затем берутся первые три элемента списка (т.е. топ-3 заказа) и возвращаются в отсортированной форме по убыванию суммы.
Метод `get_sales_by_client` используется для получения всех заказов, совершенных данным клиентом. Он фильтрует список заказов по клиенту и возвращает новый список, содержащий только заказы, совершенные указанным клиентом.
Пример использования класса:
python
sales_data = [
{'client': 'A', 'amount': 100},
{'client': 'B', 'amount': 200},
{'client': 'A', 'amount': 150},
{'client': 'C', 'amount': 300},
{'client': 'B', 'amount': 250},
]
analyzer = SalesAnalyzer(sales_data)
# Вывод общей статистики о продажах
print(analyzer.describe_sales())
# {'total_sales': 5, 'total_amount': 1000, 'average_amount': 200}
# Получение топ-3 заказов по сумме
print(analyzer.get_top_by_amount_sales())
# [{'client': 'C', 'amount': 300}, {'client': 'B', 'amount': 250}, {'client': 'A', 'amount': 150}]
# Получение всех заказов клиента 'A'
print(analyzer.get_sales_by_client('A'))
# [{'client': 'A', 'amount': 100}, {'client': 'A', 'amount': 150}]
И вот результаты:
{'total_sales': 5, 'total_amount': 1000, 'average_amount': 200}
[{'client': 'C', 'amount': 300}, {'client': 'B', 'amount': 250}, {'client': 'A', 'amount': 150}]
[{'client': 'A', 'amount': 100}, {'client': 'A', 'amount': 150}]
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет