%在Python中有什么意义

时间:2013-08-14 04:37:33

标签: python

我是编程语言的新手,也是Python的新手。

我仍然无法理解%的重要性,尽管我已经阅读了3个简短的教程来解释它。

有人可以在这段代码中分解%正在做什么吗?

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print n, "=", x, "*", n/x

5 个答案:

答案 0 :(得分:4)

对于数字,它返回除法的余数(如指出的那样)。

10/3为3,余数为1。

所以10 % 3 == 1


最常见的用途是检查可分性。例如,在该循环中,它检查n是否可被x整除。例如,它可以用于每n th 时间做一些事情。

for i in range(1, 10):
   if i % 3 == 0:
       print "I love cats and dogs"
   else:
       print "I love cats"

输出,

I love cats
I love cats
I love cats and dogs
I love cats
I love cats
I love cats and dogs
I love cats
I love cats
I love cats and dogs

答案 1 :(得分:1)

在这种情况下,%运算符是Modulo operator

如规范中所述:

  

%(modulo)运算符从第一个参数除以第二个参数得到余数。数字参数首先转换为通用类型。零右参数会引发ZeroDivisionError异常。参数可以是浮点数,例如,3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)模运算符总是产生与第二个操作数(或零)具有相同符号的结果;结果的绝对值严格小于第二个操作数的绝对值

在这种情况下,您将在分部n / x

中找到剩余部分

您的代码示例从n=2迭代到n=9。对于每个n,内部循环检查n的所有除数大于1.对于每个除数,它会打印出一条显示n因子分解的行。

答案 2 :(得分:1)

对于数字,它是模数运算符。对于字符串,它是“字符串插值”(或“字符串格式化”)运算符。

代码中的特定习语if n % x == 0:对应于可分性测试。换句话说,如果n可被x整除,则它将导致True(即,除n / x的余数为0)。或者,如果需要,n是x的倍数(有一些整数y,使得x * y == n)。

为了更好地解释它,让我们分析n(在外部)中的内部迭代。它将等同于:

for x in range(2, 6):
    if 6 % x == 0:
        print n, "=", x, "*", n/x

使用执行跟踪:

x   6 % x  6 % x == 0    6 / x     Output
--  -----  ----------  ----------  ------
2     0       True         3       6 = 2 * 3
3     0       True         2       6 = 3 * 2
4     2       False    Irrelevant  <none>
5     1       False    Irrelevant  <none>

您可以继续使用n的其他值。或者全部9个。你会看到,像6,8一样也是一个有趣的案例。甚至更多。

答案 3 :(得分:0)

%是模数运算符:它将返回基本上是整数除法运算的余数。 5 % 2 = 15 % 5 = 0等。在常规整数数学中,所有结果都向下舍入,因此5/2将返回2,即使两次适合五次2.5次。当然0是一个特例,在大多数语言中都有未定义的行为。

答案 4 :(得分:-1)

在算术中,如果您使用的是实数(或有理数),并且除以1/2,则可以得到0.5作为答案。现在,如果您仅限于使用整数,1/2将返回0,因为在整数中,1不能被2整除。然后,进行整数除法的一种方法是执行长除法,将结果的整数部分存储为整数除法的结果,并且为了不丢失任何数据,还存储余数,这是{{{ 1}}运算符返回。

在Python中,当你进行标准除法%时,你实际上在进行浮点除法(因此可以表示分数),因此/。现在,如果您使用整数除法1/2 = 0.5,那么//。为了获得这个值,python只执行标准除法,并取决于结果。如果您要在纸上手动写出除法算法,您会注意到该除法的余数为1//2 = 0。模数1运算符只返回这个余数。

所以,%1/2 = 0.51//2 = 0

换句话说,1%2 = 1返回与进行长除法时相同的余数。

%