这究竟是什么意思在Python?

时间:2014-02-21 17:22:48

标签: python

我正在研究项目Euler问题,并在网上找到了这个代码:

a = 1
b = 2
s = 0

while b <= 4000000:
    if not b % 2:
        s += b
    a, b = b, a + b
print s

我不完全确定if not b % 2:意味着什么,并且想知道是否有人会介意为我揭开它。

5 个答案:

答案 0 :(得分:3)

来自docs

The % (modulo) operator yields the remainder from the division of the first argument by the second.

e.g。 5/2 == 2.5 # or 2 remainder 15%2 == 1

唯一一次%操作0(满足not x%y)的操作是否可以被整除。换句话说,4 % 2 == 0因为2平均分为4。

在你的代码中,它说:

while b is less than 4,000,000:
    if b is even:
        set s equal to s+b

答案 1 :(得分:1)

modulo % operator返回每2 b除法的剩余部分(在您的情况下)。
所以if not b % 2if b % 2 == 0的含义相同:它检查数字是否均匀。

答案 2 :(得分:0)

b % 2是除以2后的余数。因此,如果b为奇数,则为1,否则为0。

因此,{p> if not b % 2可以翻译为“如果b是偶数”

答案 3 :(得分:0)

Python将值1解释为True,将0解释为False:

>>> 1 == True
True
>>> 0 == True
False

x % y除以x时,模运算y会返回余数。因此b % 20为偶数时为b,在1为奇数时为b

将所有这些结合在一起,声明if not b % 2:对应于&#34;如果b是偶数&#34;。

答案 4 :(得分:-1)

这只是一种写作if b%2==0的可爱方式。传递not0运算符将返回TrueFalse将返回其他内容。