为什么这不适用于project euler第2部分?(Python)包含项目说明

为什么这不适用于project euler第2部分?(Python)包含项目说明,python,Python,这个脚本可以给我 所有斐波那契数高达4000000 给我所有偶数的总和,最多4000000 然而,它不能满足以下要求,我想知道如何使它这样做 我的剧本: #Problem 2 P2 = 0 fib= 0 f1 = 1 f2 = 0 debugP2 = [] while fib < 4000000: fib = f1 + f2 f2 = f1 f1 = fib if fib % 2 == 0: P2 += fib debugP2

这个脚本可以给我

  • 所有斐波那契数高达4000000

  • 给我所有偶数的总和,最多4000000

  • 然而,它不能满足以下要求,我想知道如何使它这样做

    我的剧本:

    #Problem 2
    P2 = 0
    fib= 0
    f1 = 1
    f2 = 0
    debugP2 = []
    while fib < 4000000:
        fib = f1 + f2
        f2 = f1
        f1 = fib
        if fib % 2 == 0:
            P2 += fib
            debugP2.append(fib)
    print(debugP2)
    print(fib)
    
    #问题2
    P2=0
    fib=0
    f1=1
    f2=0
    debugP2=[]
    当fib<4000000时:
    fib=f1+f2
    f2=f1
    f1=fib
    如果fib%2==0:
    P2+=fib
    debugP2.append(fib)
    打印(调试P2)
    打印(fib)
    
    问题是:

    斐波那契序列中的每个新项都是通过将前两项相加生成的。
    从1和2开始,前10个术语将是:

    1、2、3、5、8、13、21、34、55、89

    通过考虑Fibonacci序列中值不超过4的项 百万,求偶数值项之和


    您应该打印
    P2
    而不是
    fib

    #Problem 2
    P2 = 0
    fib= 0
    f1 = 1
    f2 = 0
    debugP2 = []
    while fib < 4000000:
        fib = f1 + f2
        f2 = f1
        f1 = fib
        if fib % 2 == 0:
            P2 += fib
            debugP2.append(fib)
    print(P2) # Its not fib
    
    编辑:您可以这样缩短程序

    P2, fib, f1, f2 = 0, 0, 1, 0
    while fib < 4000000:
        fib, f2 = f1 + f2, f1
        f1 = fib
        if fib % 2 == 0:
            P2 += fib
    print(P2) # Its not fib
    

    非常感谢你,我不敢相信我错过了。“欢迎你:”请考虑一下投票,接受这个答案,如果它能帮助你,我会接受,一旦我得到了声誉投票。
    P2, fib, f1, f2 = 0, 0, 1, 0
    while fib < 4000000:
        fib, f2 = f1 + f2, f1
        f1 = fib
        if fib % 2 == 0:
            P2 += fib
    print(P2) # Its not fib
    
    4613732