基础乌龟递归

0 投票
1 回答
700 浏览
提问于 2025-04-20 02:07

我有个关于用Python的Turtle库的问题。我想让最后画出来的图像看起来像这样:https://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)

谢谢你!

1 个回答

0

你可以试试使用调试器,这会对你有帮助。运行你的代码时,输入

import pdb
from turtle import *

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

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

首先输入 s进入这个函数,然后输入 n下一步执行每一行代码。如果你想进入递归调用的 jester 函数,当到达它时输入 s。这样可以帮助你找到代码出错的地方。因为你的代码有点重复(画乌龟的代码通常都是这样),你可以加一些打印语句,告诉自己每一部分代码的作用是什么(比如画正方形的上边,或者准备进行递归调用的位置)。

关于 Python 调试器的更多命令和信息,可以在 这里找到。总结一下,输入 h 可以获取帮助,c 可以继续执行,u 可以结束当前函数调用并返回到上一个函数。你还可以通过输入变量的名字来查看它的值。

撰写回答