Тема: случайные числа в Python (random), циклы, коллекции
Контекст: бизнес-сценарии с готовыми вводными данными
⸻
Уровень 1 — Лёгкий
Задача 1: Симуляция ежедневных продаж
Контекст
Компания продаёт один тип товара.
Количество продаж каждый день случайное.
Нужно получить данные за неделю и рассчитать итог.
Вводные данные
- Минимум продаж в день: 5
- Максимум продаж в день: 20
- Цена товара: 35 €
- Период: 7 дней
Задача
Написать программу, которая:
- Генерирует случайное количество продаж на каждый день.
- Сохраняет продажи в список.
- Выводит:
- продажи по дням
- общую выручку за неделю
- среднее количество продаж
Что использовать
- random.randint()
- list
- for
⸻
Задача 2: Генерация случайных заказов
Контекст
Интернет-магазин получает случайное число заказов в день.
Вводные данные
- Количество дней: 5
- Количество заказов в день: 1–10
- Средний чек: 50–150 €
Задача
Для каждого дня:
- Сгенерировать случайное число заказов.
- Для каждого заказа сгенерировать сумму.
- Подсчитать:
- сумму по каждому дню
- общую сумму всех заказов
Что использовать
- вложенные циклы
- списки
⸻
Уровень 2 — Средний
Задача 3: Анализ склада
Контекст
Компания хранит товары на складе.
Количество товаров поступает случайно.
Вводные данные
Товары:
products = [
"Laptop",
"Mouse",
"Keyboard",
"Monitor",
"Headphones"
]
Параметры:
- Поставка каждого товара: 10–100 шт
- Цена товара:
prices = {
"Laptop": 900,
"Mouse": 25,
"Keyboard": 45,
"Monitor": 300,
"Headphones": 80
}
Задача
- Для каждого товара:
- сгенерировать количество
- сохранить в словарь
- Рассчитать:
- общую стоимость склада
- самый дорогой товар по общей стоимости
Что использовать
- dict
- random.randint
- цикл for
⸻
Задача 4: Симуляция клиентов
Контекст
Компания получает клиентов случайным образом.
Каждый клиент:
- делает покупку
- или уходит без покупки
Вводные данные
- Клиенты в день: 20
- Вероятность покупки: 60%
- Средний чек: 30–120 €
Задача
- Для каждого клиента:
- случайно определить покупку (True/False)
- если покупка — сгенерировать сумму
- Подсчитать:
- количество покупателей
- общую выручку
- процент конверсии
Что использовать
- random.random()
- списки
- условные операторы
⸻
Уровень 3 — Тяжёлый
Задача 5: Симуляция интернет-магазина за месяц
Контекст
Компания продаёт несколько категорий товаров.
Продажи происходят случайно.
Вводные данные
Категории:
categories = {
"Electronics": (100, 1200),
"Clothing": (20, 200),
"Books": (5, 50),
"Home": (30, 400)
}
Описание:
- ключ — категория
- значение — диапазон цены
Параметры:
- Дней: 30
- Клиентов в день: 10–50
Задача
Для каждого дня:
- Сгенерировать клиентов.
- Каждый клиент:
- выбирает случайную категорию
- покупает товар по случайной цене из диапазона
- Сохранить продажи в структуру:
{
day_number: [list_of_orders]
}
Рассчитать:
- общую выручку за месяц
- выручку по категориям
- самый прибыльный день
- средний чек
Что использовать
- словари
- списки
- вложенные циклы
- random.choice
- random.randint
⸻
Задача 6: Прогноз нагрузки на сотрудников (сложная логика)
Контекст
Компания распределяет задачи между сотрудниками.
Количество задач каждый день случайное.
Вводные данные
Сотрудники:
employees = [
"Anna",
"Mark",
"John",
"Sara",
"Leo"
]
Параметры:
- Дней: 14
- Задач в день: 5–25
- Время выполнения задачи: 15–120 минут
Задача
- Каждый день:
- генерировать задачи
- случайно распределять их между сотрудниками
- Сохранить данные:
{
"Anna": [список минут задач],
...
}
Рассчитать:
- общее время работы каждого сотрудника
- самого загруженного сотрудника
- среднюю загрузку команды
- дни перегрузки (если > 600 минут в день)
Что использовать
- словари
- списки
- random.choice
- вложенные циклы
- агрегацию данных
⸻
Дополнительные идеи для усложнения
Можно добавить:
- логирование результатов в файл
- визуализацию (matplotlib)
- сортировку по прибыли
- фильтрацию по условиям
- генерацию отчётов
- обработку ошибок
⸻
Если цель — обучение
Рациональный порядок выполнения:
- Задача 1
- Задача 2
- Задача 3
- Задача 4
- Задача 5
- Задача 6
Так покрываются:
- random
- циклы
- списки
- словари
- вложенные структуры
- аналитические расчёты