Оператор по модулю в Python считается арифметической операцией, наряду с +, -, /, *, **, //. Оператор modulo(%) используется в Python для получения остатка после деления.
Оператор по модулю(%) в Python
modulo — это встроенный оператор, который возвращает остаток от деления левого операнда на правый операнд. Он используется, чтобы получить оставшуюся часть задачи деления.
Когда вы видите символ %, вы можете подумать о «процентах». Но в большинстве языков программирования это означает другое. Например, символ % в Python называется оператором по модулю.
Оператор modulo(%) дает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в стандартный тип. Аргумент с нулевым правом вызывает исключение ZeroDivisionError.
Аргументы могут быть плавающими числами, например, 3,14%0,7 равно 0,34(поскольку 3,14 равно 4*0,7 + 0,34).
Оператор modulo(%) всегда дает результат с тем же знаком, что и его второй операнд(или ноль); абсолютное значение результата строго меньше абсолютного значения второго операнда [2].
Во многих языках программирования оба операнда этого оператора по модулю должны быть целыми числами. Но оператор Python Modulo в этом случае является гибким. Операнды могут быть либо целыми числами, либо числами с плавающей запятой.
Выражение типа %b оценивает остаток от a ÷ b. Технически это «модуль», а не «напоминание», поэтому результаты могут отличаться при сравнении с другими языками, где % — оператор остатка.
Синтаксис
|
1 |
x % y |
Здесь x делится на y, и возвращается остаток.
Пример
- Давайте посмотрим пример с числами.
|
1 |
print(5 % 2) |
Выход:
|
1 |
1 |
Результат предыдущего примера равен единице. Итак, 2 превращаются в 5 два раза, и остается остаток 1.
7 / 2 = 3 и остаток 1 и 7% 2 = 1. Это означает, что модуль возвращает остаток.
- Давайте посмотрим на другой пример.
См. следующий код.
|
1 |
print(6 % 2) |
Выход:
|
1 |
- Теперь давайте посмотрим на следующий код, в котором левое значение меньше правого.
|
1 |
print(2 % 3) |
Выход:
|
1 |
2 |
Мы получили 2, потому что 3 никогда не превращается в 2, поэтому исходная 2 остается.
Использование оператора по модулю с диапазоном и циклом for
Наиболее распространенной операцией оператора по модулю является поиск четных или нечетных чисел. Например, в приведенном ниже коде оператор по модулю используется для вывода всех четных чисел от 1 до 9.
|
1 2 3 |
for number in range(1, 9): if(number % 2 == 0): print(number) |
Выход:
|
1 2 3 4 |
2 4 6 8 |
В этом примере мы использовали функцию range() для генерации определенных чисел и проверки четности значения с помощью оператора модуля.
Исключения с оператором модуля Python
Единственное исключение, которое вы получаете с оператором по модулю(%), — это когда второй аргумент равен 0. Это означает, что операнд делителя оператора по модулю не может быть равен нулю.
|
1 |
print(6 % 0) |
Выход:
|
1 2 3 4 |
Traceback(most recent call last): File "app.py", line 1, in <module> print(6 % 0) ZeroDivisionError: integer division or modulo by zero |
Мы получили следующую ошибку.
ZeroDivisionError: целочисленное деление или по модулю на ноль.
Это одно из самых распространенных исключений во всех языках программирования.
Форматирование вывода с использованием оператора String по модулю(%)
Оператор по модулю(%) также можно использовать для строкового формата. Он интерпретирует левый аргумент так же, как строка формата в стиле printf(), примененная к правому аргументу.
|
1 |
print("App: %2d, Dividend: %5.2f" %(1, 05.333)) |
Выход:
|
1 |
App: 1, Dividend: 5.33 |
В нашем примере есть два оператора по модулю: «%2d» и «%5.2f». Общий синтаксис заполнителя формата следующий.
|
1 |
%[flags][width][.precision]type |
См. другой пример.
|
1 2 3 |
predestination = 'john_%(jane)s_' predestination %= {'jane': 'doe'} print(predestination) |
Выход:
|
1 |
john_doe_ |
Заключение
Оператор по модулю Python, также известный как оператор остатка или оператор целочисленного остатка, работает с целыми числами(и целочисленными выражениями) и дает остаток, когда первый операнд делится на второй операнд.
