Как % работает в 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_'
опять же, вне темы, но это, кажется, немного документированная функция, которая заняла у меня некоторое время, чтобы отследить,и Я думал, что это связано с вычислением питонов по модулю, для которого эта страница занимает высокое место.
модуль является математической операцией, иногда описываемой как " арифметика часов."Я нахожу, что описание его как просто остаток вводит в заблуждение и сбивает с толку, потому что оно маскирует реальную причину, по которой оно так много используется в информатике. Он действительно используется, чтобы обернуть вокруг циклов.
подумайте о часах: Предположим, вы смотрите на часы в "военном" времени, где диапазон времени идет от 0:00 - 23.59. Теперь, если бы вы хотели, чтобы что-то происходило каждый день в полночь, вы бы хотели, чтобы текущее время mod 24 равняется нулю:
Если (час % 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 21 / 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
это основано на приоритете оператора.
%
и по модулю.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, потому что мы делаем целочисленную математику здесь.
мне было трудно легко найти конкретные случаи использования для использования % online, например, почему разделение дробного модуля или отрицательного модуля приводит к ответу, что это так. Надеюсь, это поможет прояснить такие вопросы:
Модуль Деления В Целом:
модуль деления возвращает остаток операции математического деления. Он делает это следующим образом:
скажем, у нас есть дивиденд 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