2014-09-05 68 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