Каков результат% в Python?
Что это %
в расчете? Я не могу понять, что это делает.
Получается ли процент от расчета, например: 4 % 2
по-видимому, равен 0. Как?
20 ответов
Оператор% (по модулю) возвращает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип. Нулевой правый аргумент вызывает исключение 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_'
Опять же, не по теме, но, похоже, это была небольшая документированная особенность, которую мне потребовалось некоторое время, чтобы отследить, и я подумал, что это связано с вычислением по модулю Pythons, для которого эта SO-страница высоко оценивается.
Выражение как 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
Модуль - это математическая операция, которую иногда называют "арифметикой часов". Я считаю, что описание его просто как остатка вводит в заблуждение и вводит в заблуждение, поскольку оно скрывает реальную причину, по которой он так часто используется в информатике. Это действительно используется, чтобы обернуть вокруг циклов.
Подумайте о часах. Предположим, вы смотрите на часы в "военное" время, где диапазон времени колеблется от 0:00 до 23,59. Теперь, если вы хотите, чтобы что-то происходило каждый день в полночь, вы бы хотели, чтобы текущее время мод 24 было равно нулю:
если (час% 24 == 0):
Вы можете думать о всех часах в истории, повторяющихся вокруг круга из 24 часов снова и снова, и текущий час дня - это бесконечно длинное число мод 24. Это гораздо более глубокая концепция, чем просто остаток, это математический способ. иметь дело с циклами, и это очень важно в информатике. Он также используется для обтекания массивов, что позволяет вам увеличивать индекс и использовать модуль для переноса назад в начало после достижения конца массива.
Python - Основные операторы
http://www.tutorialspoint.com/python/python_basic_operators.htm
Модуль - Делит левый операнд на правый операнд и возвращает остаток
а = 10 и б = 20
б% а = 0
В большинстве языков% используется для модуля. Python не является исключением.
Оператор% 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')
Это, кажется, немного не по теме, но это, безусловно, поможет кому-то.
Также есть полезная встроенная функция под названием 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
в качестве первой строки исходного кода в каждом исходном файле.
Это операция по модулю, кроме случаев, когда это устаревший оператор форматирования строк в стиле C, а не операция по модулю. Смотрите здесь для деталей. Вы увидите многое из этого в существующем коде.
Оператор модуля, он обычно используется для деления остатка на целые числа, но в Python может использоваться для чисел с плавающей запятой.
http://docs.python.org/reference/expressions.html
Оператор% (по модулю) возвращает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип. Нулевой правый аргумент вызывает исключение ZeroDivisionError. Аргументами могут быть числа с плавающей запятой, например, 3,14%0,7 равно 0,34 (поскольку 3,14 равно 4*0,7 + 0,34.) Оператор по модулю всегда выдает результат с тем же знаком, что и его второй операнд (или ноль); абсолютное значение результата строго меньше, чем абсолютное значение второго операнда [2].
Быть в курсе, что
(3+2+1-5) + (4%2) - (1/4) + 6
даже в скобках результат равен 6,75 вместо 7, если он рассчитан в Python 3.4.
И оператор '/' тоже не так легко понять (python2.7): try...
- 1/4
1 - 1/4
Это немного не по теме, но это следует учитывать при оценке приведенного выше выражения:)
Мне было трудно легко найти конкретные варианты использования% онлайн, например, почему деление с дробным модулем или деление с отрицательным модулем приводит к полученному ответу. Надеюсь, это поможет прояснить такие вопросы:
Модуль деления в целом:
Модуль деления возвращает остаток от операции математического деления. Это делает это следующим образом:
Скажем, у нас есть дивиденд 5 и делитель 2, следующая операция деления будет (приравнена к х):
dividend = 5
divisor = 2
x = 5/2
Первым шагом в расчете модуля является проведение целочисленного деления:
x_int = 5 // 2 (целочисленное деление в питоне использует двойную косую черту)
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
Оператор% (по модулю) возвращает остаток от деления первого аргумента на второй. Числовые аргументы сначала преобразуются в общий тип.
3 + 2 + 1 - 5 + 4% 2 - 1/4 + 6 = 7
Это основано на приоритетах операторов.
Это, как и во многих C-подобных языках, остаток или операция по модулю. См. Документацию для числовых типов - int, float, long, complex.
Модуль - Делит левый операнд на правый операнд и возвращает остаток.
Если это поможет:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
... и так далее.
Я обнаружил, что самый простой способ понять оператор модуля (%) - это деление в столбик. Это остаток, который может быть полезен при определении четного или нечетного числа:
4%2 = 0
2
2|4
-4
0
11%3 = 2
3
3|11
-9
2
Это операция по модулю 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, потому что мы делаем целочисленную математику здесь.
%
по модулю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
def absolute(c):if c>=0:return celse:return c*-1x=int(input("Введите значение:"))a=absolute(x)print(a)