DamiRocK

Python: коммутативность, раскраска забора и деление пирожных

Проверяем, когда перестановка операндов допустима. Степень для восьми независимых выборов цвета и деление девяти пирожных на троих.

Порядок операндов

Для целых чисел сложение коммутативно: 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. Упражнения сохранены; граница правила уточнена.

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.