Уровень 1 — Лёгкий
Тема: глобальная ставка налога
Вводные
Компания применяет единый налог на все продажи.
Налог хранится как глобальная переменная.
Функции используют её для расчётов.
⸻
Данные
TAX_RATE = 0.19 # 19% налог
orders = [
{"product": "Book", "price": 30},
{"product": "Pen", "price": 5},
{"product": "Notebook", "price": 12}
]
⸻
Задачи
- Расчёт цены с налогом
Написать функцию:
def calculate_price_with_tax(price):
Требования:
- использовать глобальную переменную TAX_RATE
- вернуть цену с налогом
⸻
- Расчёт всех цен
Написать функцию:
def get_all_prices_with_tax(orders):
Требования:
- пройти циклом по заказам
- использовать calculate_price_with_tax()
- вернуть список цен с налогом
⸻
- Локальная скидка
Написать функцию:
def apply_discount(price):
Требования:
- создать локальную переменную discount = 0.1
- вернуть цену со скидкой
⸻
Уровень 2 — Средний
Тема: бюджет отдела
Вводные
Компания задаёт месячный бюджет отдела.
Бюджет — глобальная переменная.
Расходы рассчитываются внутри функций.
⸻
Данные
MONTHLY_BUDGET = 5000
expenses = [
{"type": "Office Supplies", "amount": 600},
{"type": "Software", "amount": 1200},
{"type": "Marketing", "amount": 1800},
{"type": "Travel", "amount": 700}
]
⸻
Задачи
- Общие расходы
def calculate_total_expenses(expenses):
Требования:
- создать локальную переменную total
- пройти циклом
- вернуть сумму расходов
⸻
- Остаток бюджета
def calculate_remaining_budget(expenses):
Требования:
- использовать глобальную MONTHLY_BUDGET
- вызвать calculate_total_expenses()
- вернуть остаток бюджета
⸻
- Проверка превышения бюджета
def is_budget_exceeded(expenses):
Требования:
- вернуть True, если расходы больше бюджета
- иначе False
⸻
- Изменение глобального бюджета
def increase_budget(amount):
Требования:
- использовать ключевое слово global
- увеличить MONTHLY_BUDGET
⸻
Уровень 3 — Тяжёлый
Тема: управление системой бонусов сотрудников
Вводные
Компания начисляет бонусы сотрудникам.
Есть глобальные настройки системы бонусов.
Функции рассчитывают индивидуальные бонусы.
⸻
Данные
BONUS_RATE = 0.05
MIN_SALES_FOR_BONUS = 1000
employees = [
{"name": "Anna", "sales": 1200},
{"name": "Boris", "sales": 800},
{"name": "Dmitry", "sales": 2000},
{"name": "Elena", "sales": 950}
]
⸻
Задачи
- Расчёт бонуса сотрудника
def calculate_bonus(employee):
Требования:
Локальные переменные:
sales
bonus
Логика:
- если sales >= MIN_SALES_FOR_BONUS
- бонус:
sales * BONUS_RATE
- иначе бонус = 0
- вернуть бонус
⸻
- Список бонусов
def generate_bonus_report(employees):
Требования:
Вернуть список:
[
{"name": "...", "bonus": ...}
]
Использовать:
- цикл
- функцию calculate_bonus()
- локальные переменные
⸻
- Общая сумма бонусов
def calculate_total_bonuses(employees):
Требования:
- локальная переменная total_bonus
- цикл
- суммирование бонусов
⸻
- Изменение правил бонусов
def update_bonus_rate(new_rate):
Требования:
- использовать global BONUS_RATE
- изменить значение
⸻
- Массовое обновление порога продаж
def update_min_sales(new_min):
Требования:
- использовать global MIN_SALES_FOR_BONUS
- изменить значение
⸻
Дополнительные задачи (усложнение уровня 3)
- Локальный временный коэффициент
def calculate_bonus_with_multiplier(employee):
Требования:
- создать локальную переменную:
multiplier = 1.2
- применить её к бонусу
- глобальные переменные не менять
⸻
Что должно закрепиться
- различие глобальных и локальных переменных
- область видимости
- использование global
- локальные переменные внутри функций
- изменение глобальных переменных
- передача данных через параметры
- повторное использование функций