Практическая задача: Учёт заказов в интернет-магазине (кортежи)
⸻
Задача: Учёт заказов клиентов
Описание ситуации
Есть интернет-магазин.
Каждый заказ хранится как кортеж, содержащий фиксированный набор данных.
Структура заказа:
(id_заказа, имя_клиента, сумма_заказа, город)
Пример одного заказа:
order = (1001, "Иван", 2500, "Москва")
Все заказы хранятся внутри общего кортежа orders.
Пример:
orders = (
(1001, "Иван", 2500, "Москва"),
(1002, "Анна", 4200, "Казань"),
(1003, "Петр", 1800, "Москва"),
(1004, "Ольга", 5600, "Самара"),
(1005, "Мария", 3100, "Москва")
)
⸻
Цель работы
Отработать:
• индексацию кортежей
• вложенные кортежи
• перебор кортежей
• распаковку кортежей
• методы count() и index()
• работу с неизменяемыми структурами
⸻
Задание 1 — Вывести все заказы
Вывести все заказы в формате:
ID: 1001 | Клиент: Иван | Сумма: 2500 | Город: Москва
Подсказка:
Использовать:
for order in orders:
Распаковка:
order_id, name, amount, city = order
⸻
Задание 2 — Найти общий доход магазина
Найти сумму всех заказов.
Ожидаемый результат:
Общий доход: 17200
Подсказка:
• пройти циклом
• сложить все суммы заказов
⸻
Задание 3 — Найти самый дорогой заказ
Вывести заказ с максимальной суммой.
Формат вывода:
Самый дорогой заказ:
ID: XXXX | Клиент: XXXX | Сумма: XXXX
Подсказка:
Использовать:
max_amount = 0
⸻
Задание 4 — Подсчитать количество заказов из Москвы
Найти сколько заказов сделано из города Москва.
Ожидаемый результат:
Количество заказов из Москвы: 3
Подсказка:
Проверка:
if city == "Москва":
⸻
Задание 5 — Найти заказ по ID
Найти заказ с id = 1003.
Вывести:
Найден заказ:
(1003, "Петр", 1800, "Москва")
Подсказка:
Проверка:
if order_id == 1003:
⸻
Задание 6 — Создать список только сумм заказов
Извлечь все суммы заказов в новый кортеж:
Ожидаемый результат:
(2500, 4200, 1800, 5600, 3100)
Подсказка:
Создать новый кортеж через накопление.
⸻
Задание 7 — Найти средний чек
Найти среднюю сумму заказа.
Формула:
средний чек = сумма всех заказов / количество заказов
Ожидаемый результат:
Средний чек: 3440.0
⸻
Задание 8 — Вывести заказы дороже 3000
Вывести только те заказы, где сумма больше 3000.
Формат:
(1002, "Анна", 4200, "Казань")
(1004, "Ольга", 5600, "Самара")
(1005, "Мария", 3100, "Москва")
⸻
Задание 9 — Создать новый заказ
Создать новый заказ:
new_order = (1006, "Сергей", 2700, "Томск")
Добавить его в orders.
Подсказка:
Кортежи неизменяемые — нужно создать новый кортеж:
orders = orders + (new_order,)
⸻
Задание 10 — Найти все города без повторений
Вывести уникальные города из заказов.
Ожидаемый результат:
Москва
Казань
Самара
Подсказка:
Использовать:
set()
⸻
Дополнительное задание (повышенной сложности)
Создать функцию:
def get_orders_by_city(orders, city_name):
Функция должна:
• принимать кортеж заказов
• возвращать кортеж заказов только из указанного города
Пример вызова:
moscow_orders = get_orders_by_city(orders, "Москва")
Ожидаемый результат:
(
(1001, "Иван", 2500, "Москва"),
(1003, "Петр", 1800, "Москва"),
(1005, "Мария", 3100, "Москва")
)
⸻
Что отрабатывается в задаче
• вложенные кортежи
• распаковка
• перебор структур
• создание новых кортежей
• неизменяемость
• работа с бизнес-данными
• базовая аналитика данных
⸻
Рекомендуемая структура решения
orders = (
(1001, "Иван", 2500, "Москва"),
(1002, "Анна", 4200, "Казань"),
(1003, "Петр", 1800, "Москва"),
(1004, "Ольга", 5600, "Самара"),
(1005, "Мария", 3100, "Москва")
)