2014-09-05 57 views
0

我有一個快速的問題,使用龜與Python。我想最終的繪圖看起來像這樣:http://i.stack.imgur.com/IFw5G.jpg基本的龜遞歸

但是我的代碼只做了一部分,我無法弄清楚我的生活。這是一項家庭作業,所以請不要爲我做,請帶領我正確的方向,因爲我無法弄清楚我做錯了什麼。我無法弄清楚什麼是如何讓它重現圖像左側的方塊,因爲它只在右側。

這裏是我的代碼:

from turtle import * 
differentColors = ['green', 'blue'] 
def jester(N, L): 
    if N <=0: 
     pass  
    else:  
     pencolor(differentColors[N % len(colors)]) 
     forward(L/2) 
     left(90)   
     forward(L)  
     left(90)   
     forward(L) 
     left(90)   
     forward(L)  
     left(90)   
     forward(L/2)   
     forward(L/2)   
     left(90)   
     forward(L)  
     right(150)  
     jester(N-1, L/2)      

jester(4, 100) 

謝謝!

+0

請將您的代碼添加爲文本,而不是圖片。有些人無法進入Imgur。 – gparyani 2014-09-05 19:25:50

+1

除了無法訪問imgur的用戶,如果我們不必輸入它,運行代碼將變得更容易... – kindall 2014-09-05 19:27:29

+0

'從龜進口* differentColors = [ '綠色', '藍'] DEF小丑(N,L): \t如果N <= 0: \t \t通 \t否則: \t \t pencolor( differentColors [N%LEN(顏色)]) \t \t正向(L/2) \t \t左(90) \t \t正向(L) \t \t左(90) \t \t正向(L) \t \t左(90) \t \t正向(L) \t \t左(90) \t \t正向(L/2) \t \t正向(L/2) \t \t左(90) \t \t正向(L) \t \t右(150) \t \t小丑(N-1,L/2) \t \t \t \t \t 小丑(4,100)' – Alan 2014-09-05 19:49:36

回答

0

你可能會發現使用調試器很有幫助。運行你的代碼

import pdb 
from turtle import * 

differentColors = ['green', 'blue'] 
def jester(N, L): 
    ... 

pdb.run('jester(4, 10)') 

第一類s步入的功能,然後下一個鍵入n一個地執行每行一個,如果你想踏入一個遞歸調用sjester類型當你接近它。這應該有助於您查看代碼出錯的位置。由於你的代碼是相當重複的(龜的東西幾乎總是),所以你可能需要添加一些打印語句來說明代碼的每個部分應該做什麼(例如繪製正方形的頂邊或進入位置遞歸調用)。

有關python調試器的其他命令和更多信息可以在here找到。摘要是h幫助,c繼續和u完成當前函數調用並返回到前一個函數。您也可以通過輸入名稱來查看變量的值。

+0

好的,所以我做了幾次,它一步一步向我展示了我的代碼是如何執行的。但是我嘗試了幾次,我仍然無法讓它對稱。我試着不止一次地打電話給「小丑」,它只是繼續沿着這條道路前進。 – Alan 2014-09-05 20:31:24

+0

「小丑」功能只是一種在圖案中繪製方塊的方式。看看每個「耳朵」在哪裏開始。您必須將烏龜移動到該位置(和方向)才能在該位置繪製耳朵。否則,你只需要將耳朵畫在當前的烏龜身上。 – Dunes 2014-09-06 08:07:03