我正在研究项目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:
意味着什么,并且想知道是否有人会介意为我揭开它。
答案 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 1
,5%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 % 2
与if b % 2 == 0
的含义相同:它检查数字是否均匀。
答案 2 :(得分:0)
b % 2
是除以2后的余数。因此,如果b为奇数,则为1,否则为0。
if not b % 2
可以翻译为“如果b是偶数”
答案 3 :(得分:0)
Python将值1解释为True,将0解释为False:
>>> 1 == True
True
>>> 0 == True
False
当x % y
除以x
时,模运算y
会返回余数。因此b % 2
在0
为偶数时为b
,在1
为奇数时为b
。
将所有这些结合在一起,声明if not b % 2:
对应于&#34;如果b是偶数&#34;。
答案 4 :(得分:-1)
这只是一种写作if b%2==0
的可爱方式。传递not
时0
运算符将返回True
,False
将返回其他内容。