2016-03-20 30 views
0

Bir Python öğreticisini okuyorum, alıştırmalardan biri beni sıkıştı. Alıştırmanın açıklaması şöyledir: "Aşağıdaki işlevi okuyun ve ne yaptığını anlayabilip edemeyeceğinizi öğrenin. Ardından çalıştırın." Yani sana gerçekten ne yaptığını söyleyemem, hala üzerinde çalışıyorum.AttributeError: 'int' nesnesinin öznesi yok 'fd'

Sadece iki ilk satırı kendim yazdım, söz konusu öğreticiden bir kopya macunu. İşte kod:

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) 

Traceback verir:

> 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

İlk bağımsız değişken bir tam sayıdır - 't'. Bu argüman global değişkeninizi gölgede bırakıyor. T = turtle.Turtle() ' –

+0

@Rogalski Ben bunu bir cevap olarak göndermelisiniz – syntonym

cevap

1

İlk parametre 5, yani değişken t fonksiyonunda değerini 5 olduğundan bu hatayı nedenidir. Kod daha sonra 5.fd(length*n)'u aramayı dener. draw çağrılırken t ilk parametreyi değiştirin: draw` çağrısına `geçirilen

draw(t, 10, 15)