Главная Веб-разработка Деление в Python: какие операторы и когда использовать

Деление в Python: какие операторы и когда использовать

от admin

Пишем код и вспоминаем основы школьной арифметики.

Деление в Python используется для математических вычислений и реализации алгоритмов с проверкой условий. В обоих случаях для этого применяют специальные операторы, предусмотренные в языке программирования.

Из этой статьи вы узнаете:

Деление в Python: какие операторы и когда использовать

Алексей Ушаровский

Principal software engineer в Oracle, эксперт Skillbox по бэкенду и Java в энтерпрайзе.

Оператор деления

Деление в Python может быть обычным и целочисленным. Операторы для них различаются:

  • / — обычное деление;
  • // — целочисленное деление, в результате которого мы получаем результат без остатка.

Для получения остатка от деления используется оператор %.

Деление в Python имеет стандартный математический приоритет — оно выполняется после вычисления выражений в скобках и возведения чисел в степень.

Порядок выполнения Оператор Описание
1 () Скобки
2 ** Возведение в степень
3 ~x, +x, -x Битовое отрицание, унарный плюс и минус
4 *, /, //, % Умножение, деление, целочисленное деление, остаток от деления
5 +, Сложение и вычитание

Обычное деление

Деление с остатком — самая простая для понимания операция деления в Python. Она обозначается с помощью символа косой черты / и работает как обычное деление, которое мы ежедневно производим при подсчёте денег, расстояний, объёмов жидкостей и так далее.

Вот как она используется:

print(5 / 2) # 2.5 print(6 / 3) # 2.0 print(45 / 4) # 11.25

Результат операции деления с остатком всегда представлен в виде числа с плавающей точкой — float. Это работает даже в том случае, если делимое и делитель явно привести к целым значениям int:

print(int(5) / int(2)) # 2.5 print(int(6) / int(3)) # 2.0 print(int(45) / int(4)) # 11.25

Такая особенность появилась в Python 3.x. В более ранних версиях языка результат деления двух целых чисел также был целым числом.

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

print(1 / 3) # 0.3333333333333333

Об этом лучше помнить при написании кода и округлять результат до нужной точности или проводить целочисленное деление.

Деление без остатка

В Python предусмотрена операция целочисленного деления, которая обозначается двойной косой чертой //. Результатом такого выражения будет целое число без остатка:

print(5 // 2) # 2 print(6 // 3) # 2 print(45 // 4) # 11

Дробная часть не показана в результатах, но если делимое или делитель будет числом с плавающей точкой, то она вернётся:

print(5 // 2.0) # 2.0 print(5.0 // 2) # 2.0

И это ещё одна особенность вычислений, о которой надо помнить. К примеру, если вывод программы всегда должен быть без дробной части, то надо привести все числа к целочисленному типу перед вычислением. Это можно сделать до или после деления:

Читать также:
Альберт Эйнштейн: жизнь, E = mc² и научные революции

print(5 // int(2.0)) # 2 print(int((5.0) // 2)) # 2

Как найти остаток или деление по модулю

Остаток — это дробная часть числа, которая отбрасывается при целочисленном делении. При необходимости её можно получить с помощью оператора %. В математике это называется делением по модулю.

Рассмотрим операцию на примере целочисленного деления 10 на 3. Результатом будет 3, а 1 Python отбросит и не выведет в результат. Если нам нужно получить остаток, то можно использовать %:

print(10 % 3) # 1

Получение остатка от деления часто применяется для реализации различных алгоритмов. К примеру, с помощью этого оператора можно искать чётные числа. Напишем для этого простую функцию:

def is_even(number): # Если остаток от деления на 2 равен нулю, то число чётное if number % 2 == 0: print(‘Число чётное’) else: print(‘Число нечётное’) is_even(12) # Число чётное is_even(13) # Число нечётное

Деление на ноль

В Python, как и в большинстве других языков программирования, запрещено деление на ноль. Если попытаться провести эту операцию, то интерпретатор сообщит нам об исключении ZeroDivisionError, остановит выполнение кода и выведет в консоль ошибку.

Если мы знаем, что деление на ноль может возникнуть в ходе работы программы, то такое исключение надо обработать в коде. Например, мы хотим создать калькулятор. Пользователь нашего приложения может ввести любое число в качестве делителя, в том числе ноль.

Обработаем такой вариант события и выведем ему сообщение, что операция невозможна:

a = 10 b = 0 try: result = a / b except ZeroDivisionError: print(“Делить на ноль нельзя!”) else: print(result)

В примере выше делитель равен нулю, поэтому Python выполнит код и выведет в консоль текст Делить на ноль нельзя!. Если в переменной b будет любое число, отличное от 0, то пользователь увидит только результат деления с остатком.

Сокращённая запись

Иногда нам нужно разделить значение переменной на какое-то число и перезаписать в неё же результат вычисления. Обычно это делают так:

a = 10 a = a // 2 # В итоге в переменной a будет храниться число 5

Такую форму записи называют инфиксной. Но можно сократить её, использовав префиксное выражение:

a = 10 a //= 2 # В этом случае в переменной a тоже будет число 5

Такие выражения работают со всеми операторами деления в Python:

  • a /= b — деление с остатком;
  • a //= b — целочисленное деление;
  • a %= b — вычисление остатка от деления, где a — делимое, b — делитель.

Это число, полученное из исходного заменой всех нулей на единицы и наоборот.

Похожие статьи