Как % работает в Python?
Что значит %
в расчет? Я не могу понять, что он делает.
работает ли он в процентах от расчета, например:3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
очевидно, равна 7. Как?
18 ответов
оператор % (по модулю) дает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип. Нулевой правый аргумент вызывает исключение ZeroDivisionError. Аргументами могут быть числа с плавающей запятой, например, 3.14%0.7 равно 0.34 (так как 3.14 равно 4*0.7 + 0.34 - ... ) Оператор по модулю всегда дает результат с тем же знаком, что и его второй операнд( или ноль); абсолютное значение результата строго меньше чем абсолютное значение второго операнда [2].
взято из http://docs.python.org/reference/expressions.html
Пример 1:
6%2
оценивает в 0
потому что нет остатка, если 6 делится на 2 (3 раза ).
Пример 2: 7%2
значение 1
потому что есть остаток 1
когда 7 делится на 2 ( 3 раза ).
Итак, чтобы подвести итог, это возвращает остаток операции деления, или 0
если нет остатка. Так что 6%2
означает найти остаток 6, разделенный на 2.
несколько не по теме %
также используется в операциях форматирования строк, таких как %=
для замены значений в строку:
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
опять же, вне темы, но это, кажется, немного документированная функция, которая заняла у меня некоторое время, чтобы отследить,и Я думал, что это связано с вычислением по модулю питонов, для которого эта страница so занимает высокое место.
модуль является математической операцией, иногда описываемой как " арифметика часов."Я нахожу, что описание его просто как остатка вводит в заблуждение и сбивает с толку, потому что оно маскирует реальную причину, по которой оно так часто используется в информатике. Он действительно используется для обертывания циклов.
подумайте о часах: Предположим, вы смотрите на часы в "военном" времени, где диапазон времени идет от 0:00 до 23.59. Теперь, если вы хотите, чтобы что-то происходило каждый день в полночь, вы бы хотели, чтобы текущее время mod 24 равняется нулю:
if (час % 24 == 0):
вы можете думать о всех часах в истории, обертывающих вокруг круга 24 часов снова и снова, и текущий час дня-это бесконечно длинное число mod 24. Это гораздо более глубокая концепция, чем просто остаток, это математический способ борьбы с циклами, и это очень важно в информатике. Он также используется для обертывания массивов, что позволяет увеличить индекс и использовать модуль для вернитесь к началу после того, как достигнете конца массива.
выражение, подобное "x % y", вычисляется как остаток "x / y". Правила приоритета похожи на " / "и"*".
>>> 9 / 2
4
>>> 9 % 2
1
- 9 деленное на 2 равно 4.
- 4 раза 2 - 8
- 9 минус 8 равно 1-остаток.
питон Гоча: в зависимости от используемой версии Python,%
также является (устаревшим) строковым оператором интерполяции, поэтому следите, если вы исходите из языка с автоматическое литье типа (например, PHP или JS) , где выражение типа '12' % 2 + 3
является законным: в Python это приведет к TypeError: not all arguments converted during string formatting
что, вероятно, будет довольно запутанным для вас.
[обновление для Python 3]
комментарии пользователя n00p:
9/2-4.5 в python. Вы должны сделать целочисленное деление следующим образом: 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
в большинстве языков % используется для модуль. Python не является исключением.
Python - Базовые Операторы
http://www.tutorialspoint.com/python/python_basic_operators.htm
модуль - делит левый операнд на правый операнд и возвращает остаток
a = 10 и b = 20
b % a = 0
кроме того, есть полезная встроенная функция divmod
:
divmod (a, b)
Возьмите два (не комплексные) числа в качестве аргументов и возвращает пару чисел состоящих из их частного и остаток при использовании длинного деления.
x % y
вычисляет остаток от деления x
разделить на y
здесь частное-целое число. Остальные имеют знак y
.
на Python 3 расчет дает 6.75
, поскольку /
делает истинное деление, а не целочисленное деление, как (по умолчанию) на Python 2. На Python 2 1 / 4
дает 0, в результате округляется вниз.
целочисленное деление можно сделать и на Python 3, с помощью //
оператор, таким образом, чтобы получить 7 в результате, вы можете выполнить:
3 + 2 + 1 - 5 + 4 % 2 - 1 // 4 + 6
кроме того, вы можете получить разделение стиля Python на Python 2, просто добавив строку
from __future__ import division
как первая строка исходного кода в каждом исходном файле.
оператор модуля, он используется для деления остатка на целые числа, как правило, но в Python может использоваться для чисел с плавающей запятой.
http://docs.python.org/reference/expressions.html
оператор % (по модулю) дает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип. Нулевой правый аргумент вызывает исключение ZeroDivisionError. Аргументы могут быть числа с плавающей запятой, например, 3.14%0.7 равно 0.34 (так как 3.14 равно 4*0.7 + 0.34 - ... ) Оператор по модулю всегда дает результат с тем же знаком, что и его второй операнд (или ноль); абсолютное значение результата строго меньше абсолютного значения второго операнда [2].
это операция по модулю, за исключением случаев, когда это старомодный оператор форматирования строк в стиле C, а не операция по модулю. См.здесь для сведения. Вы увидите много этого в существующем коде.
имейте в виду, что
(3+2+1-5) + (4%2) - (1/4) + 6
даже с скобками результаты в 6.75 вместо 7, Если рассчитано в Python 3.4.
и оператор ' / ' также не так легко понять (python2.7): попробуйте...
- 1/4
1 - 1/4
Это немного не по теме здесь, но должно учитываться при оценке приведенного выше выражения :)
% Modulo оператор может также использоваться для печати строк (так же, как в C), как определено в Google https://developers.google.com/edu/python/strings.
# % operator
text = "%d little pigs come out or I'll %s and %s and %s" % (3, 'huff', 'puff', 'blow down')
это, кажется, немного не по теме, но это, безусловно, поможет кому-то.
Это, как и во многих C-подобных языках, операция остатка или по модулю. Вижу документация для числовых типов-int, float, long, complex.
модуль - делит левый операнд на правый операнд и возвращает остаток.
Если это поможет:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
... и так далее.
оператор % (по модулю) дает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип.
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 = 7
это основано на приоритете оператора.
%
is дулю. 3 % 2 = 1
, 4 % 2 = 0
/
есть (целое число в этом случае) деление, так что:
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
1 + 4%2 - 1/4 + 6
1 + 0 - 0 + 6
7
Это операция по модулю http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
Итак, с порядком операций, который работает до
(3+2+1-5) + (4%2) - (1/4) + 6
(1) + (0) - (0) + 6
7
1/4=0, потому что мы делаем целочисленную математику здесь.
мне было трудно легко найти конкретные случаи использования для использования % онлайн, например, почему выполнение дробного деления модуля или отрицательного деления модуля приводит к ответу, который он делает. Надеюсь, это поможет прояснить такие вопросы:
Модуль Деления В Целом:
модуль деления возвращает остаток операции математического деления. Он делает это следующим образом:
скажем, у нас есть дивиденд 5 и делитель 2, Следующая операция деления будет (приравнена к x):
dividend = 5
divisor = 2
x = 5/2
-
первым шагом в расчете модуля является проведение целочисленного деления:
x_int = 5 / / 2 (целочисленное деление в python использует двойную косую черту)
x_int = 2
-
далее, выход x_int умножается на делитель:
x_mult = x_int * делитель x_mult = 4
-
наконец, дивиденд вычитается из x_mult
дивиденд-x_mult = 1
-
операция модуля, следовательно, возвращает 1:
5 % 2 = 1
применение для применения модуля к дроби
Example: 2 % 5
расчет модуля при применении к дроби такой же, как и выше; однако важно отметить, что целочисленное деление приведет к значению нуля когда делитель больше делимого:
dividend = 2
divisor = 5
целочисленное деление приводит к 0, тогда как; поэтому, когда выполняется Шаг 3 выше, значение дивиденда переносится (вычитается из нуля):
dividend - 0 = 2 —> 2 % 5 = 2
применение для применения модуля к отрицательному
происходит деление пола, в котором значение целочисленного деления округляется до самого низкого целочисленного значения:
import math
x = -1.1
math.floor(-1.1) = -2
y = 1.1
math.floor = 1
, когда вы делаете целочисленное деление вы можете получить другой результат, чем вы ожидаете!
применение вышеуказанных шагов к следующим дивидендам и делителям иллюстрирует концепцию модуля:
dividend: -5
divisor: 2
Шаг 1: применить целочисленное деление
x_int = -5 // 2 = -3
Шаг 2: умножьте результат целочисленного деления на делитель
x_mult = x_int * 2 = -6
Шаг 3: вычесть дивиденд из умноженной переменной, обратите внимание на двойной минус.
dividend - x_mult = -5 -(-6) = 1
таким образом:
-5 % 2 = 1