Python 3.1中的百分比符号的含义是什么?

在教程中有一个用于查找素数的例子。

>>> for n in range(2, 10): ... for x in range(2, n): ... if n % x == 0: ... print(n, 'equals', x, '*', n//x) ... break ... else: ... # loop fell through without finding a factor ... print(n, 'is a prime number') ... 

我明白,双==是一个平等的考验,但我不明白“如果n%x”部分。 就像我可以口头讲述每个部分,并说出这个例子的说法。 但我不明白百分比是如何落入的。“如果n%x”实际上说了什么?

模量算子; 给出剩余的左值除以正确的值。 喜欢:

3 % 1将等于零(因为3均分1)

3 % 2等于1(因为3除以2得到1的余数)。

%根据参数做了两件事。 在这种情况下,它作为模运算符,意思是当它的参数是数字时,它将第一个除以第二个并返回余数34 % 10 == 4因为34除以10是三,剩下的四。

如果第一个参数是一个string,则使用第二个参数对其进行格式化。 这有点牵扯,所以我会参考文档 ,但只是一个例子:

 >>> "foo %d bar"%5 'foo 5 bar' 

然而,string格式化行为从Python 3.1开始被补充,转而使用string .format()机制:

这里描述的格式化操作展现了各种各样的怪癖,导致了一些常见的错误(如未能正确显示元组和字典)。 使用更新的str.format()接口有助于避免这些错误,并且还提供了一种通常更强大,灵活且可扩展的方法来格式化文本。

谢天谢地,几乎所有的新function都可以从Python 2.6以上版本获得。

虽然这有些偏离主题,但是由于人们会通过search“Python中的百分比符号”(像我这样做)来find这个问题,所以我想要注意的是,%符号也被用来作为iPython中的“魔术”函数的前缀: https ://ipython.org/ipython-doc/3/interactive/tutorial.html#magic-functions

在python 2.6中,'%'操作符执行模数。 我不认为他们在3.0.1中改变了它

模运算符告诉你两个数字除法的其余部分。

它检查分区的模数。 例如,如果您正在遍历从2到n的所有数字,并检查n是否可以被中间的任何数字整除。 简而言之,您正在检查给定的数字n是否为素数。 (提示:你可以检查n / 2)。

模数运算符。 当你除以两个数字的余数。

例如:

 >>> 5 % 2 = 1 # remainder of 5 divided by 2 is 1 >>> 7 % 3 = 1 # remainer of 7 divided by 3 is 1 >>> 3 % 1 = 0 # because 1 divides evenly into 3