Порядок операндов
Для целых чисел сложение коммутативно: 3 + 2 и 2 + 3 дают 5. Вычитание таким свойством не обладает: 2 - 3 даёт −1, а 3 - 2 — 1.
Деление и возведение в степень также нельзя произвольно переставлять. 8 / 2 не равно 2 / 8, а 2 ** 3 не равно 3 ** 2.
Два задания источника
Восемь секций забора нужно раскрасить, независимо выбирая один из двух цветов для каждой. Затем девять пирожных нужно поровну разделить между тремя людьми. Выведите оба ответа отдельными строками.
print(2 ** 8)
print(9 / 3)
Результат:
256
3.0
Почему именно такая степень
На первой секции два варианта, на второй тоже два, и так восемь раз. Всего 2·2·…·2=2⁸. Перестановка основания и показателя дала бы 8²=64 — число для совсем другой модели выбора.
Вторая задача требует разделить общее количество 9 на число участников 3. Обратная дробь 3/9 не отвечает на вопрос о количестве пирожных на человека.
Граница правила
Коммутативность нужно устанавливать для конкретной операции и типов данных. Например, в дальнейших уроках + будет также соединять строки, а "a" + "b" и "b" + "a" различаются. Обозначение оператора само по себе не гарантирует, что школьное правило переносится на любые объекты программы.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнения сохранены; граница правила уточнена.