回答
%(模)运算符产生第一个参数除以第二个参数的余数。数字参数首先被转换为通用类型。零右参数引发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%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
这可能会让你感到困惑。
你可以用一个例子来解释一下吗?抱歉。 :( – orange 2010-12-13 18:34:58
模运算符,它用于整数的余数分割,通常情况下,但在Python中可用于浮点数。
http://docs.python.org/reference/expressions.html
%(模)运算符产生了由第二的第一个参数的除法的余数。数字参数首先被转换为通用类型。零右参数引发ZeroDivisionError异常。参数可以是浮点数,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34)。模运算符总是产生与第二操作数(或零)符号相同的结果;结果的绝对值严格小于第二个操作数[2]的绝对值。
在大多数语言中,%用于modulus。 Python也不例外。
就我所见,Python不常见,因为它使用%作为模数; Fortran,C/C++和Java使用%来表示余数。 (请参阅http://stackoverflow.com/questions/13683563/whats-the-difference-between-mod-and-remainder,差异在于如何处理负值和小数值)。区分的语言(如Ada ,Haskell和Scheme)使用“rem”和“mod”(或“余数”和“模数”)而不是%。 – 2014-05-23 05:49:05
更新:我通过语言http://en.wikipedia.org/wiki/Modulo_operation发现了这个伟大的模/余数运算表。 Python是不寻常的,但不是唯一的(例如,TCL和Lua共享Python的惯例。) – 2014-05-23 06:00:42
就像在许多类似C语言中一样,其余的或模运算也是如此。请参阅documentation for numeric types — int, float, long, complex。
%(模)运算符产生第一个参数除以第二个参数的余数。数字参数首先被转换为通用类型。
3 + 2 + 1 - 5 + 4%2 - 1/4 + 6 = 7
这是基于操作者的优先级。
%
是modulo。 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
的1/4 = 0,因为我们在这里做整数运算。
Python的 - 基础算
http://www.tutorialspoint.com/python/python_basic_operators.htm
模量 - 由右手操作数除以左手操作数并返回其余
A = 10和b = 20
B%一= 0
这是一个模运算,除当它是一个老式的C风格的字符串格式化运算符时,不是模运算。详情请参阅here。你会在现有的代码中看到很多。
另外,有称为divmod
一个有用的内置功能:
divmod(A,B)
取两(非复数)号作为参数,并返回一对由数字 的的商和 其余时使用长划分。
有点偏离主题,将%
也用于字符串格式化操作,如%=
将值代入一个字符串:
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
同样,偏离主题,但它似乎是一个小记录功能,花了我一段时间来追查,和我认为这与蟒蛇模数计算有关,因为这个网页排名很高。
谢谢。这是一个记录不完善和广泛使用的功能,是我带到这篇文章的原因。 – 2013-12-29 21:28:54
我们喜欢这个无题的答案。 – 2014-07-28 11:50:40
是否有%逻辑被用作字符串格式引用,或者它只是历史事件中的那个符号被重载了吗?这应该是它自己的问题吗? – WAF 2014-08-19 14:17:16
模数是一种数学运算,有时称为“时钟算术”。我发现将它简单地描述为余数是误导和混淆的,因为它掩盖了它在计算机科学中如此使用的真实原因。它确实被用来环绕周期。想象一下时钟:假设你在“军事”时间看时钟,时间范围从0:00到23.59。现在,如果你想要的东西,每天午夜发生,你会希望当前的时间国防部24是零:
如果(小时%24 == 0):
你能想到的一切历史上小时一遍又一遍地围绕着一个24小时的圆周,一天中的当前时间是无限长的数字24。这是一个更深刻的概念,而不仅仅是一个余数,它是一个处理周期的数学方法,它是非常计算机科学中很重要。它也用于环绕数组,允许您在达到数组末尾后增加索引并使用模数回到开头。
这是正确的答案,它必须被标记为如此。 – 2016-01-25 06:46:32
这是如何在Python中实现的:'a%b = a - b * floor(a/b)' – 2016-01-27 12:17:36
注意,如果在Python 3.4计算
(3+2+1-5) + (4%2) - (1/4) + 6
即使在6.75,而不是7括号结果。
而“/”经营者不是那么容易理解,太(python2.7):尝试...
- 1/4
1 - 1/4
这是一个有点题外话这里,但应评估上述表达式:)
这将如何成为7?它简化为'(1)+(0) - (0.25)+(6)'。 – 2016-06-13 13:41:09
x % y
当考虑计算由y
其中的商是整数除以除法x
的其余部分。其余的标记为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
作为每个源文件中的第一个源代码行。
记得小孩'#'是注释,'//'是一个操作符。 – 2016-05-06 08:16:19
模数 - 用右手操作数分开左手操作数并返回余数。
如果有帮助:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
...等等。
%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')
这似乎比较偏离主题,但它肯定会帮助别人。
我很难找到使用%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
- 1. 在Python中如何工作?
- 2. 如何试用python在WPF中工作?
- 3. 数字如何在Python中工作?
- 4. Deque如何在Python中工作
- 5. choiceboxes如何在Python easygui中工作?
- 6. 如何在Python中反向工作
- 7. 集合如何在Python中工作?
- 8. elif如何在Python中工作?
- 9. str.join如何在Python中工作
- 10. 冒号(:)如何在python&pandas中工作?
- 11. 过滤如何在Python中工作?
- 12. 如何在python类中命名工作?
- 13. threading.timer如何在python中工作
- 14. Python网络如何工作?
- 15. python如何开始工作?
- 16. python pyminizip compress_multiple如何工作?
- 17. python脚本如何工作?
- 18. Python列表如何工作?
- 19. Python:集合如何工作
- 20. python Set Comprehensions如何工作?
- 21. Python-daemon如何工作
- 22. python类如何工作?
- 23. Python urllib2 https如何工作?
- 24. python:如何绑定工作
- 25. python webdriver如何工作?
- 26. Python setuptools如何工作?
- 27. python如何扩展工作?
- 28. Python中的@符号如何工作?
- 29. Python中的递归如何工作
- 30. python中的searchsort如何工作?
这LPTHW ..... – orange 2011-04-17 13:31:53
不应'3 + 2 + 1 - 5 + 4%2 - 1/4 + 6'评估为'6.75' ? – taper 2018-01-03 10:41:11
@taper这个问题可能没有使用python 3.0或更高版本。 – 2018-01-05 00:46:18