Python - Project Euler#57,理解错误

时间:2016-06-09 22:16:36

标签: python iteration

当我运行此代码来计算根2连续分数的收敛:

def root_two_expansion():
    total=0
    a=(3,2)
    b=(7,5)
    x=3
    while x<=1000:
        c=((sum(a)+sum(b)),sum(b))
        if len(str(c[0]))>len(str(c[1])):
            total+=1
        a=b,b=c
        x+=1
    return total

print root_two_expansion()

我收到此错误:

  

069.506.py“,第7行,在root_two_expansion中       C =((总和(A)+和(b)中),和(b))的   TypeError:'int'对象不可迭代

这是为什么?我不明白代码在哪个阶段尝试迭代int。我会很感激任何建议。

1 个答案:

答案 0 :(得分:5)

该行

a=b,b=c

解压缩cb中的元组b,因此只有第二个int保存在b中。在下一个循环步骤中,您尝试在此int上调用sum

你的意思是

a, b = b, c