DamiRocK

Python: магические числа и понятный расчёт количества ящиков

Заменяем непонятное произведение 6×17 переменными pallets_count и boxes_per_pallet. Сохраняем вывод и объясняем смысл коэффициентов.

Число без объяснения

Выражение 6 * 17 легко вычислить, но из него не видно, что означают множители. Неочевидные числовые значения, встроенные в расчёт без понятного назначения, называют магическими числами.

Проблема не в самом присутствии чисел. Важно, может ли читатель определить их роль и безопасно изменить нужный параметр.

Задание источника

Исходный код печатает подпись Boxes in stock:, затем результат 6 * 17. Перепишите его с осмысленными переменными, сохранив вывод.

label = "Boxes in stock:"
pallets_count = 6
boxes_per_pallet = 17

print(label)
print(pallets_count * boxes_per_pallet)

Результат:

Boxes in stock:
102

Смысл множителей

pallets_count обозначает количество паллет, а boxes_per_pallet — число ящиков на одной. Произведение имеет единицы «ящики», что согласуется с подписью.

Имена number1 и number2 убрали бы литералы из выражения, но почти не добавили бы смысла. Задание состоит не в механическом переносе чисел на другую строку, а в раскрытии их назначения.

Что проверить после изменения

Результат должен оставаться 102, подпись — неизменной, порядок двух строк — прежним. Если требуется изменить размер поставки, теперь ясно, какое значение относится к числу паллет, а какое — к вместимости одной паллеты.

В учебном эталоне исходника используется именно такая интерпретация 6 и 17. Она сохранена в адаптации; фактических сведений о реальном складе пример не содержит.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнение и смысл эталона сохранены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.