Выражение типа x % y
оценивается как остаток от x ÷ y
. Приоритет такой же, как у операторов /
(деление) и *
(умножение).
>>> 9 / 2
4
>>> 9 % 2
1
- 9, деленное на 2, равно 4.
- 4 раза 2 равно 8
- 9 минус 8 равен 1 - остаток.
Python получил : в зависимости от используемой версии Python, %
также является (устаревшим) оператором интерполяции строк, поэтому следите, если вы переходите с языка с автоматическим приведением типов (например, PHP или JS), где выражение типа '12' % 2 + 3
является допустимым: в Python это приведет к TypeError: not all arguments converted during string formatting
, что, вероятно, будет довольно запутанным для вас.
[обновление для Python 3]
Комментарии пользователя n00p:
9/2 - это 4,5 в питоне. Вы должны выполнить целочисленное деление следующим образом: 9 // 2, если вы хотите, чтобы python сообщал вам, сколько всего объектов осталось после деления (4).
Если быть точным, целочисленное деление раньше использовалось по умолчанию в Python 2 (учтите, этот ответ старше моего мальчика, который уже учится в школе):
$ python2.7
Python 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4
>>> 9 // 2
4
>>> 9 % 2
1
В Python 3 теперь 9 / 2
результаты 4.5
действительно, но имейте в виду, что оригинальный ответ очень старый.
$ python3.6
Python 3.6.1 (default, Apr 27 2017, 00:15:59)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4.5
>>> 9 // 2
4
>>> 9 % 2
1