调试后的修复功能

2024-10-01 15:37:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试调试并修复这个函数,假设它在深度为2时使用大写字母“I”。我想我使用pdb.set_trace()发现了问题,但不太确定如何整体修复它。此函数产生一半的大写字母“i”。无论如何,我试图通过改变它来修复函数,它会把它搞得更糟。。。下面是函数

from turtle import *
import pdb

def initWindow( size ):
    setup(600,600)
    setworldcoordinates( -size-1, -size-1, size, size )
    left(90)
    pensize(3)
    speed(0)

def drawI(depth, size):
    if(depth < 1):
        pass
    else:
        pdb.set_trace()
        fd(size/2)
        lt(90)
        drawI(depth-1,size/2)
        rt(90)  ###############HERE
        fd(-size/2)
        lt(90)
        drawI(depth-1,size/2) #Where it seems to be the problem
        rt(90)

def main():
    size = 100
    depth = int(input("enter depth: "))
    initWindow(size)
    drawI(depth, size)
    input("enter to quit")

main()

我的一个问题是,为什么第二个drawI(depth-1,size/2)被忽略,然后转到rt(90),然后再回到#这里


Tags: to函数importltsizedeftrace大写字母
1条回答
网友
1楼 · 发布于 2024-10-01 15:37:39

您需要指定前进命令,以便乌龟从线的中心开始,在线的前面和后面各画一半。像这样:

def drawI(depth, size):
    if(depth < 1):
        pass
    else:
        #draw the half in front of the turtle
        fd(size/2)

        #draw head
        lt(90)
        drawI(depth-1,size/2)
        rt(90)

        #return to center
        fd(-size/2)

        #draw the half behind the turtle
        fd(-size/2)

        #draw head
        lt(90)
        drawI(depth-1,size/2)
        rt(90)

        #return to center
        fd(size/2)

您的原始代码在行的末尾启动了海龟,当您递归到较低的深度时,这会导致不寻常的结果

相关问题 更多 >

    热门问题