Деление в Python: какие операторы и когда использовать
Пишем код и вспоминаем основы школьной арифметики.
Иллюстрация: onlyyouqj / mamewmy / Freepik / Zero Take / Michael Dziedzic / Dell / Faris Mohammed / Tra Nguyen / Unsplash / Maxime Bober / Jaggery / Tris T7 / Fabián Alexis / Wikimedia Commons / Дима Руденок для Skillbox Media
Деление в Python используется для математических вычислений и реализации алгоритмов с проверкой условий. В обоих случаях для этого применяют специальные операторы, предусмотренные в языке программирования.
Из этой статьи вы узнаете:
Оператор деления
Деление в Python может быть обычным и целочисленным. Операторы для них различаются:
- / — обычное деление;
- // — целочисленное деление, в результате которого мы получаем результат без остатка.
Для получения остатка от деления используется оператор %.
Деление в Python имеет стандартный математический приоритет — оно выполняется после вычисления выражений в скобках и возведения чисел в степень.
Порядок выполнения | Оператор | Описание |
---|---|---|
1 | () | Скобки |
2 | ** | Возведение в степень |
3 | ~x, +x, -x | Битовое отрицание, унарный плюс и минус |
4 | *, /, //, % | Умножение, деление, целочисленное деление, остаток от деления |
5 | +, - | Сложение и вычитание |
Обычное деление
Деление с остатком — самая простая для понимания операция деления в Python. Она обозначается с помощью символа косой черты / и работает как обычное деление, которое мы ежедневно производим при подсчёте денег, расстояний, объёмов жидкостей и так далее.
Вот как она используется:
Результат операции деления с остатком всегда представлен в виде числа с плавающей точкой — float. Это работает даже в том случае, если делимое и делитель явно привести к целым значениям int:
Такая особенность появилась в Python 3.x. В более ранних версиях языка результат деления двух целых чисел также был целым числом.
В некоторых случаях нововведение может привести к непредсказуемым результатам работы кода. Например, к появлению десятичных периодических дробей:
Об этом лучше помнить при написании кода и округлять результат до нужной точности или проводить целочисленное деление.
Деление без остатка
В Python предусмотрена операция целочисленного деления, которая обозначается двойной косой чертой //. Результатом такого выражения будет целое число без остатка:
Дробная часть не показана в результатах, но если делимое или делитель будет числом с плавающей точкой, то она вернётся:
И это ещё одна особенность вычислений, о которой надо помнить. К примеру, если вывод программы всегда должен быть без дробной части, то надо привести все числа к целочисленному типу перед вычислением. Это можно сделать до или после деления:
Как найти остаток или деление по модулю
Остаток — это дробная часть числа, которая отбрасывается при целочисленном делении. При необходимости её можно получить с помощью оператора %. В математике это называется делением по модулю.
Рассмотрим операцию на примере целочисленного деления 10 на 3. Результатом будет 3, а 1 Python отбросит и не выведет в результат. Если нам нужно получить остаток, то можно использовать %:
Получение остатка от деления часто применяется для реализации различных алгоритмов. К примеру, с помощью этого оператора можно искать чётные числа. Напишем для этого простую функцию:
Деление на ноль
В Python, как и в большинстве других языков программирования, запрещено деление на ноль. Если попытаться провести эту операцию, то интерпретатор сообщит нам об исключении ZeroDivisionError, остановит выполнение кода и выведет в консоль ошибку.
Если мы знаем, что деление на ноль может возникнуть в ходе работы программы, то такое исключение надо обработать в коде. Например, мы хотим создать калькулятор. Пользователь нашего приложения может ввести любое число в качестве делителя, в том числе ноль.
Обработаем такой вариант события и выведем ему сообщение, что операция невозможна:
В примере выше делитель равен нулю, поэтому Python выполнит код и выведет в консоль текст Делить на ноль нельзя!. Если в переменной b будет любое число, отличное от 0, то пользователь увидит только результат деления с остатком.
Сокращённая запись
Иногда нам нужно разделить значение переменной на какое-то число и перезаписать в неё же результат вычисления. Обычно это делают так:
Такую форму записи называют инфиксной. Но можно сократить её, использовав префиксное выражение:
Такие выражения работают со всеми операторами деления в Python:
- a /= b — деление с остатком;
- a //= b — целочисленное деление;
- a %= b — вычисление остатка от деления, где a — делимое, b — делитель.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!