2016-06-09 5 views
0

Wenn ich diesen Code ausführen convergents der Wurzel 2 fortgesetzt Fraktion zu berechnen:Python - Projekt Euler # 57, das Verständnis der Fehler

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() 

ich diesen Fehler erhalten:

069.506.py", line 7, in root_two_expansion c=((sum(a)+sum(b)),sum(b)) TypeError: 'int' object is not iterable

Warum ist das ? Ich verstehe nicht, in welchem ​​Stadium der Code versucht, über einen int zu iterieren. Ich wäre dankbar für irgendwelche Vorschläge.

+1

In Zukunft sollten Sie einen Debugger verwenden, z.B. in PyCharm, um Ihnen dabei zu helfen, solche Dinge herauszufinden. –

Antwort

5

Die Linie

a=b,b=c 

entpackt das Tupel c in b und b, so dass nur der zweite int in b gespeichert wird. Im nächsten Schleifenschritt versuchen Sie sum auf diesem int aufzurufen.

Meinen Sie

a, b = b, c 
+0

Natürlich, danke. Ich bin ein komplettes Programmierenoob, also ist das v hilfreich – ggordon