Ответ 1
Оператор модуля; дает оставшуюся часть левого значения, деленное на правильное значение. Как:
3 % 1
будет равно нулю (поскольку 3 равномерно делит на 1)
3 % 2
будет равно 1 (так как разделение 3 на 2 приводит к остатку 1).
В учебнике приведен пример поиска простых чисел.
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, 'equals', x, '*', n//x)
... break
... else:
... # loop fell through without finding a factor
... print(n, 'is a prime number')
...
Я понимаю, что double == является критерием равенства, но я не понимаю часть "if n% x". Как я могу устно пройти через каждую часть и сказать, что делает утверждение для примера. Но я не понимаю, как падает процентный знак. Что означает "если n% x" на самом деле?
Оператор модуля; дает оставшуюся часть левого значения, деленное на правильное значение. Как:
3 % 1
будет равно нулю (поскольку 3 равномерно делит на 1)
3 % 2
будет равно 1 (так как разделение 3 на 2 приводит к остатку 1).
% делает две вещи, в зависимости от своих аргументов. В этом случае он действует как оператор modulo, то есть когда его аргументы являются числами, он делит первый на второй и возвращает остаток. 34 % 10 == 4
, поскольку 34, деленный на 10, равен трем, с остатком от четырех.
Если первый аргумент является строкой, он форматирует его, используя второй аргумент. Это немного связано, поэтому я буду ссылаться на документацию, но только как пример:
>>> "foo %d bar"%5
'foo 5 bar'
Однако поведение форматирования строки дополняется как Python 3.1 в пользу строкового механизма .format()
:
Описанные здесь операции форматирования демонстрируют множество причуд, которые приводят к ряду распространенных ошибок (например, неспособность правильно отображать кортежи и словари). Использование нового интерфейса
str.format()
помогает избежать этих ошибок, а также обеспечивает более мощный, гибкий и расширяемый подход к форматированию текста.
И, к счастью, почти все новые функции также доступны с версии python 2.6.
Хотя это немного не по теме, так как люди найдут это, выполнив поиск "знака процента в Python" (как и я), я хотел бы отметить, что знак% также используется для префикса "магической" функции в iPython: https://ipython.org/ipython-doc/3/interactive/tutorial.html#magic-functions
В python 2.6 оператор "%" выполнил модуль. Я не думаю, что они изменили его в версии 3.0.1.
Оператор modulo сообщает вам остаток от деления двух чисел.
Он проверяет, является ли по модулю деление. Например, в случае, когда вы повторяете все числа от 2 до n и проверяете, делится ли n на любое из чисел между ними. Проще говоря, вы проверяете, является ли заданное число n простым. (Подсказка: вы можете проверить до n/2).
Оператор модуля. Остальная часть, когда вы делите два числа.
Пример:
>>> 5 % 2 = 1 # remainder of 5 divided by 2 is 1
>>> 7 % 3 = 1 # remainer of 7 divided by 3 is 1
>>> 3 % 1 = 0 # because 1 divides evenly into 3