2016-03-20 12 views
0

Ich lese ein Python-Tutorial, eine der Übungen hat mich festgefahren. Die Beschreibung für die Übung ist: "Lesen Sie die folgende Funktion und sehen Sie, ob Sie herausfinden können, was es tut. Dann führen Sie es aus." Also kann ich dir nicht wirklich sagen, was es macht, ich arbeite immer noch daran.AttributeError: 'int' Objekt hat kein Attribut 'fd'

Ich schrieb nur die beiden ersten Zeilen selbst, es ist eine Kopie Paste aus besagtem Tutorial. Hier ist der Code:

import turtle 

t = turtle.Turtle() 
turtle.mainloop() 

def draw(t, length, n): 
    if n == 0: 
     return 
    angle = 50 
    t.fd(length*n) 
    t.lt(angle) 
    draw(t, length, n-1) 
    t.rt(2*angle) 
    draw(t, length, n-1) 
    t.lt(angle) 
    t.bk(length*n) 

draw(5, 10, 15) 

Gibt Zurückverfolgungs:

> Traceback (most recent call last): File 
> "D:\Directory\Python\Projects\Learning python\Exercises\Exercise 
> 5.14.5.py", line 18, in <module> 
>  draw(5, 10, 15) File "D:\Directory\Python\Projects\Learning python\Exercises\Exercise 5.14.5.py", line 10, in draw 
>  t.fd(length*n) AttributeError: 'int' object has no attribute 'fd' 
+1

erste Argument an 'draw' Aufruf eine ganze Zahl -' t'. Dieses Argument überschattet deine globale Variable 't = turtle.Turtle()' –

+0

@Rogalski Ich denke, du solltest das als Antwort posten – syntonym

Antwort

1

Der Grund, warum Sie diese Fehlermeldung erhalten, da der erste Parameter 5 ist, so wird die Variable t den Wert 5 in der Funktion. Der Code versucht dann, 5.fd(length*n) aufzurufen. Schalten Sie den ersten Parameter zu t beim Aufruf draw:

draw(t, 10, 15) 
Verwandte Themen