%在Python中如何工作?
计算中的%
是多less? 我似乎无法弄清楚它做了什么。
它是否计算出一个百分比例如: 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
显然等于7。
%(模)运算符产生第一个参数除以秒的余数。 数字参数首先转换为通用types。 零正确的参数引发ZeroDivisionErrorexception。 参数可以是浮点数,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34)。模运算符总是产生与第二个操作数(或零)符号相同的结果。 结果的绝对值严格小于第二个操作数[2]的绝对值。
取自http://docs.python.org/reference/expressions.html
例1:如果6除以2(3次),则6%2
评估为0
因为不存在余数。
例2 : 7%2
评估为1
因为当7除以2(3次)时,剩余1
。
所以总结一下,它返回一个除法运算的余数,如果没有余数则返回0
。 所以6%2
表示find6的余数除以2。
有点偏离主题, %
也用于string格式化操作,如%=
将值replace为string:
>>> x = 'abc_%(key)s_' >>> x %= {'key':'value'} >>> x 'abc_value_'
再次,脱离主题,但它似乎是一个小的loggingfunction,花了我一段时间来追查,我认为这是有关python模计算这个SO页排名高。
像“x%y”这样的expression式计算为“x / y”的剩余部分。 优先级规则类似于“/”和“*”。
>>> 9 / 2 4 >>> 9 % 2 1
- 9除以2等于4。
- 4次2是8次
- 9减8是1 – 余数。
Python gotcha :根据您使用的Python版本, %
也是(不推荐使用的)string插值运算符,所以要注意,如果您是从具有自动types转换的语言(如PHP或JS) '12' % 2 + 3
是合法的:在Python中它会导致TypeError: not all arguments converted during string formatting
这可能会让你感到困惑。
模数是一种math运算,有时被称为“时钟算术”。 我发现把它简单地描述为余数是误导和迷惑的,因为它掩盖了它在计算机科学中如此使用的真正原因。 这确实是用来环绕周期。
想想一个时钟:假设你在“军事”时间看一个时钟,时间的范围从0:00到23.59。 现在如果你想在午夜每天都发生一些事情,你会希望当前的时间24为零:
如果(小时%24 == 0):
你可以感谢历史上的所有时间,一遍又一遍地围绕着一个24小时的圆周,一天中的当前时间是无限长的数字24.这是一个更深刻的概念,而不仅仅是一个余数,这是一个math方法处理周期,这在计算机科学中是非常重要的。 它也用于环绕数组,允许您增加索引,并在到达数组末尾后使用模数回到开头。
Python – 基本操作符
http://www.tutorialspoint.com/python/python_basic_operators.htm
模数 – 用右手操作数分开左手操作数并返回余数
a = 10和b = 20
b%a = 0
在大多数语言中,%用于模数 。 Python也不例外。
模数运算符,通常用于整数的余数除法,但在Python中可用于浮点数。
http://docs.python.org/reference/expressions.html
%(模)运算符产生第一个参数除以二的余数。 数字参数首先转换为通用types。 零正确的参数引发ZeroDivisionErrorexception。 参数可以是浮点数,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34)。模运算符总是产生与第二个操作数(或零)符号相同的结果。 结果的绝对值严格小于第二个操作数[2]的绝对值。
这是一个模运算,除非它是一个老式的C风格的string格式化运算符,而不是模运算 。 详情请看这里 。 你会在现有的代码中看到很多。
请注意
(3+2+1-5) + (4%2) - (1/4) + 6
即使括号中的结果是6.75而不是7,如果在Python 3.4中计算的话。
而且“/”运算符也不容易理解(python2.7):try …
- 1/4 1 - 1/4
这里有点偏离主题,但是在评估上面的expression时应该考虑到:)
x % y
计算除以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 2上的Python样式部分
from __future__ import division
作为每个源文件中的第一个源代码行。
%模运算符也可用于打印string(就像在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)
以两个(非复数)数字作为参数,并在使用长整数时返回由它们的商和余数组成的一对数字。
正如许多类似C语言的语言一样,其余的或模操作也是如此。 请参阅数字types的文档 – int,float,long,complex 。
模数 – 用右手操作数分开左手操作数并返回余数。
如果有帮助:
1:0> 2%6 => 2 2:0> 8%6 => 2 3:0> 2%6 == 8%6 => true
… 等等。
%(模)运算符产生第一个参数除以秒的余数。 数字参数首先转换为通用types。
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因为我们在这里做整数运算。