Код
#статьи

Деление в 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 используется для математических вычислений и реализации алгоритмов с проверкой условий. В обоих случаях для этого применяют специальные операторы, предусмотренные в языке программирования.

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

Эксперт

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

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

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

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 — делитель.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована