Тема урока: работа с целыми числами
- Операция возведения в степень (
**
)
- Операция нахождения остатка (
%
)
- Операция целочисленного деления (
//
)
- Обработка цифр числа
- Частые ошибки
- Решение задач
Аннотация. Урок посвящён дополнительным операциям при работе с целыми числами. Изучим дополнительные операции, а также научимся обрабатывать цифры целого числа.
Дополнительные операции
Мы познакомились с 4 основными математическими операциями в языке Python: сложение (+
), вычитание (-
), умножение (*
) и деление (/
). Добавив ещё 3 операции, мы получим инструментарий, достаточный для написания 99% программ.
Оператор |
Описание |
** |
Возведение в степень |
% |
Остаток от деления |
// |
Целочисленное деление |
Возведение в степень
Для возведения числа в степень используется оператор **
.
Приведённый ниже код:
print(2 ** 0)
print(2 ** 1)
print(2 ** 2)
print(2 ** 3)
print(2 ** (-1))
выводит:
1
2
4
8
0.5
Обратите внимание: оператор возведения в степень (**
) может возводить не только в положительную степень, но и в отрицательную. Аналогично, основание степени a также может быть числом отрицательным.
Приведённый ниже код:
print(2**(-2))
print((-3)**3)
выводит:
0.25
-27
Запомни: в отличие от многих языков программирования, в языке Python для возведения в степень используется оператор **
, а не ^
.
Обратите внимание: оператор возведения в степень (**
) является правоассоциативным (значение выражения вычисляется справа налево) в соответствии с правилами математики. Таким образом, выражение x ** y ** z
вычисляется как x ** (y ** z)
.
Приведённый ниже код:
print(2 ** 2 ** 3)
выводит:
256
Целочисленное деление
Для положительных чисел оператор целочисленного деления (//
) ведёт себя как обычное деление, за исключением того, что он отбрасывает десятичную часть результата.
Приведённый ниже код:
print(10 // 3)
print(10 // 4)
print(10 // 5)
print(10 // 6)
print(10 // 12)
выводит:
3
2
2
1
0
При делении отрицательных чисел необходимо помнить, что результат целочисленного деления не превосходит частное. Другими словами, округление всегда берётся в меньшую сторону.
Приведённый ниже код:
print(10 // 3)
print(-10 // 3)
выводит:
3 # округление в меньшую сторону
-4 # округление в меньшую сторону
Деление с остатком
Оператор деления с остатком (%
) возвращает остаток от деления двух целых чисел. Рассмотрим работу данного оператора на примерах.
Приведённый ниже код:
print(10 % 3)
print(10 % 4)
print(10 % 5)
print(10 % 6)
print(10 % 12)
print(10 % 20)
выводит:
1
2
0
4
10
10
Запомни: при нахождении остатка от деления на целое число n может получаться результат 0,1,2,…n −1. Например, при делении на 2 возможны остатки 0,1, при делении на 3 возможны остатки 0,1,2 и т.д.
Примечания
Примечание 1. Оператор нахождения остатка очень полезен при решении многих задач. Например, число делится на n нацело тогда и только тогда, когда остаток от деления на n равен 0.
Примечание 2. Таблица приоритетов арифметических операторов в Python приведена ниже (чем ниже расположен оператор в таблице, тем ниже его приоритет).
Оператор |
Описание |
() |
Скобки |
** |
Возведение в степень |
- (унарный минус) |
Унарный минус |
* , / , // , % |
Умножение, деление, целочисленное деление, остаток от деления |
+ , - |
Сложение, вычитание |
Как видно из таблицы, операторы умножения (*
) и все операторы деления (/
, //
, %
) имеют равные приоритеты. А у оператора возведения в степень (**
) приоритет выше, чем у любого другого арифметического оператора, кроме скобок (()
).
Примечание 3. Полезно прочитать про модулярную арифметику в математике.
Примечание 4. Обратите внимание: при 0 < n < m
результатом деления n % m
является число n
, а результатом деления n // m
является число 0
.
Приведённый ниже код:
print(5 % 9)
print(3 % 13)
print(5 // 9)
print(3 // 13)
выводит:
5
3
0
0