practice/README.md
2026-04-03 18:51:22 +03:00

4.3 KiB
Raw Blame History

practice

Тема: Система управления заказами в интернет-магазине

Общее описание: Необходимо реализовать набор функций для обработки заказов интернет-магазина: загрузка данных, фильтрация, агрегация, расчёты и формирование отчетов.


Функции:

  1. load_orders(file_path) Принимает: строку (путь к файлу) Возвращает: список словарей (заказы) Описание: загружает данные заказов из текстового файла (например, JSON или CSV) и преобразует их в список словарей.

  2. validate_order(order) Принимает: словарь (один заказ) Возвращает: bool Описание: проверяет корректность структуры заказа (наличие обязательных полей: id, customer, items, total_price).

  3. filter_orders_by_customer(orders, customer_name) Принимает: список заказов, строку (имя клиента) Возвращает: список заказов Описание: возвращает только заказы указанного клиента.

  4. calculate_order_total(order) Принимает: словарь (заказ) Возвращает: число (сумма заказа) Описание: вычисляет итоговую стоимость заказа на основе списка товаров (items).

  5. update_order_totals(orders) Принимает: список заказов Возвращает: список заказов Описание: пересчитывает и обновляет поле total_price для каждого заказа.

  6. get_top_expensive_orders(orders, n) Принимает: список заказов, число n Возвращает: список заказов Описание: возвращает n самых дорогих заказов.

  7. group_orders_by_customer(orders) Принимает: список заказов Возвращает: словарь (ключ — имя клиента, значение — список заказов) Описание: группирует заказы по клиентам.

  8. calculate_customer_spending(orders) Принимает: список заказов Возвращает: словарь (клиент → сумма покупок) Описание: считает общую сумму покупок для каждого клиента.

  9. find_most_popular_product(orders) Принимает: список заказов Возвращает: строку (название товара) Описание: определяет самый часто покупаемый товар.

  10. generate_report(orders) Принимает: список заказов Возвращает: строку Описание: формирует текстовый отчет (общее количество заказов, топ-клиенты, популярный товар и т.д.).


Требования к main():

В функции main() необходимо:

  1. Считать данные заказов из файла (например, data/orders.txt) с помощью load_orders.

  2. Отфильтровать некорректные заказы с использованием validate_order.

  3. Пересчитать суммы заказов через update_order_totals.

  4. Выполнить анализ данных:

сгруппировать заказы (group_orders_by_customer);

посчитать траты клиентов (calculate_customer_spending);

найти популярный товар (find_most_popular_product);

определить топ дорогих заказов (get_top_expensive_orders).

  1. Сформировать итоговый отчет с помощью generate_report.

  2. Вывести результат работы программы в консоль.

Все функции должны быть использованы в рамках единого сценария обработки данных.