Python 调试后的修复功能
我正在尝试调试和修复这个函数,假设它在深度为2时提取大写字母I。我想我在使用pdb.set_trace时发现了这个问题,但不太确定如何整体解决它。该函数产生一半的资本i。无论如何,我试图通过改变它来修复函数,它会把它搞得更糟。。。下面是函数Python 调试后的修复功能,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,我正在尝试调试和修复这个函数,假设它在深度为2时提取大写字母I。我想我在使用pdb.set_trace时发现了这个问题,但不太确定如何整体解决它。该函数产生一半的资本i。无论如何,我试图通过改变它来修复函数,它会把它搞得更糟。。。下面是函数 from turtle import * import pdb def initWindow( size ): setup(600,600) setworldcoordinates( -size-1, -size-1, size, size
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()
我的一个问题是,为什么第二个drawIdepth-1,size/2被忽略,然后转到rt90,然后再回到这里?您需要指定前进命令,以便海龟从线的中心开始,在它前面和后面画一半线。像这样:
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)
您的原始代码在行的末尾启动了turtle,当您递归到较低的深度时,这会导致不寻常的结果。深度1应该是什么样子?深度1应该是一条简单的行,看起来像I,但它不是已经从行的中间开始,因为它正在执行forwardsize/2吗?那么它将先做上半部分,再做下半部分?Nvm但为什么第二个drawIdepth-1,size/2被忽略,然后转到rt90,然后再回到这里?