for x in range(y)vs.while循环:Python

use*_*506 1 python for-loop

我再次尝试项目欧拉问题,在问题2中,我被要求找到斐波纳契序列中所有偶数的总和低于400万.我能够使用下面的代码使用While循环(在代码中显示为注释),但不使用for循环(这给了我很多数字,并且'c'方式超过400万.

为什么for循环不起作用?

谢谢.

def fibo():
    z=[]
    a=1
    b=1
    c=0
    for c in range(0,4000000):    #doesn't work; works with while (c<4000000)
        c = a+b
        if c%2 == 0 and c<4000000:
            z.append(c)
        a=b
        b=c
        print c
    print 'sum is',sum(z)

fibo()
Run Code Online (Sandbox Code Playgroud)

use*_*ica 6

for循环并不意味着"停止时c == 4000000".它意味着"迭代序列range(4000000),这是一个从0到3999999的数字列表,并运行循环体一次,c设置为序列的每个元素".