Задание на практику

This commit is contained in:
Danil 2026-04-04 01:25:13 +03:00
parent 4329dcb08b
commit 86783ee820

View File

@ -1,68 +1,68 @@
# Тема: Система управления заказами в интернет-магазине # Тема: Система управления заказами в интернет-магазине
Общее описание: *Общее описание:
Необходимо реализовать набор функций для обработки заказов интернет-магазина: загрузка данных, фильтрация, агрегация, расчёты и формирование отчетов. Необходимо реализовать набор функций для обработки заказов интернет-магазина: загрузка данных, фильтрация, агрегация, расчёты и формирование отчетов.*
--- ---
Функции: ## Функции:
1. load_orders(file_path) ### 1. load_orders(file_path)
Принимает: строку (путь к файлу) Принимает: строку (путь к файлу)
Возвращает: список словарей (заказы) Возвращает: список словарей (заказы)
Описание: загружает данные заказов из текстового файла (например, JSON или CSV) и преобразует их в список словарей. Описание: загружает данные заказов из текстового файла (например, JSON или CSV) и преобразует их в список словарей.
2. validate_order(order) ### 2. validate_order(order)
Принимает: словарь (один заказ) Принимает: словарь (один заказ)
Возвращает: bool Возвращает: bool
Описание: проверяет корректность структуры заказа (наличие обязательных полей: id, customer, items, total_price). Описание: проверяет корректность структуры заказа (наличие обязательных полей: id, customer, items, total_price).
3. filter_orders_by_customer(orders, customer_name) ### 3. filter_orders_by_customer(orders, customer_name)
Принимает: список заказов, строку (имя клиента) Принимает: список заказов, строку (имя клиента)
Возвращает: список заказов Возвращает: список заказов
Описание: возвращает только заказы указанного клиента. Описание: возвращает только заказы указанного клиента.
4. calculate_order_total(order) ### 4. calculate_order_total(order)
Принимает: словарь (заказ) Принимает: словарь (заказ)
Возвращает: число (сумма заказа) Возвращает: число (сумма заказа)
Описание: вычисляет итоговую стоимость заказа на основе списка товаров (items). Описание: вычисляет итоговую стоимость заказа на основе списка товаров (items).
5. update_order_totals(orders) ### 5. update_order_totals(orders)
Принимает: список заказов Принимает: список заказов
Возвращает: список заказов Возвращает: список заказов
Описание: пересчитывает и обновляет поле total_price для каждого заказа. Описание: пересчитывает и обновляет поле total_price для каждого заказа.
6. get_top_expensive_orders(orders, n) ### 6. get_top_expensive_orders(orders, n)
Принимает: список заказов, число n Принимает: список заказов, число n
Возвращает: список заказов Возвращает: список заказов
Описание: возвращает n самых дорогих заказов. Описание: возвращает n самых дорогих заказов.
7. group_orders_by_customer(orders) ### 7. group_orders_by_customer(orders)
Принимает: список заказов Принимает: список заказов
Возвращает: словарь (ключ — имя клиента, значение — список заказов) Возвращает: словарь (ключ — имя клиента, значение — список заказов)
Описание: группирует заказы по клиентам. Описание: группирует заказы по клиентам.
8. calculate_customer_spending(orders) ### 8. calculate_customer_spending(orders)
Принимает: список заказов Принимает: список заказов
Возвращает: словарь (клиент → сумма покупок) Возвращает: словарь (клиент → сумма покупок)
Описание: считает общую сумму покупок для каждого клиента. Описание: считает общую сумму покупок для каждого клиента.
9. find_most_popular_product(orders) ### 9. find_most_popular_product(orders)
Принимает: список заказов Принимает: список заказов
Возвращает: строку (название товара) Возвращает: строку (название товара)
Описание: определяет самый часто покупаемый товар. Описание: определяет самый часто покупаемый товар.
10. generate_report(orders) ### 10. generate_report(orders)
Принимает: список заказов Принимает: список заказов
Возвращает: строку Возвращает: строку
Описание: формирует текстовый отчет (общее количество заказов, топ-клиенты, популярный товар и т.д.). Описание: формирует текстовый отчет (общее количество заказов, топ-клиенты, популярный товар и т.д.).
@ -72,36 +72,36 @@
--- ---
Требования к main(): ## Требования к main():
В функции main() необходимо: В функции main() необходимо:
1. Считать данные заказов из файла (например, data/orders.txt) с помощью load_orders. ### 1. Считать данные заказов из файла (например, data/orders.txt) с помощью load_orders.
2. Отфильтровать некорректные заказы с использованием validate_order. ### 2. Отфильтровать некорректные заказы с использованием validate_order.
3. Пересчитать суммы заказов через update_order_totals. ### 3. Пересчитать суммы заказов через update_order_totals.
4. Выполнить анализ данных: ### 4. Выполнить анализ данных:
сгруппировать заказы (group_orders_by_customer); - сгруппировать заказы (group_orders_by_customer);
посчитать траты клиентов (calculate_customer_spending); - посчитать траты клиентов (calculate_customer_spending);
найти популярный товар (find_most_popular_product); - найти популярный товар (find_most_popular_product);
определить топ дорогих заказов (get_top_expensive_orders). - определить топ дорогих заказов (get_top_expensive_orders).
5. Сформировать итоговый отчет с помощью generate_report. ### 5. Сформировать итоговый отчет с помощью generate_report.
6. Вывести результат работы программы в консоль. ### 6. Вывести результат работы программы в консоль.
Все функции должны быть использованы в рамках единого сценария обработки данных. *Все функции должны быть использованы в рамках единого сценария обработки данных.*