%在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因为不存在余数。

例27%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因为我们在这里做整数运算。