如您所述,@xfx的解决方案设置了颜色,然后无意中取消了颜色,因为它不能正确处理递归的颜色。这里有一个小的修改,在进入例程时跟踪当前颜色(也可以计算),然后在退出时恢复它。这样,您就不必担心递归调用对颜色做了什么,它们应该保持原样:from turtle import Turtle, Screen
colors = ['green', 'red']
def drawzig2(turtle, depth, size):
if depth == 0:
return
color = turtle.pencolor()
turtle.pencolor(colors[depth % len(colors)])
turtle.left(90)
turtle.fd(size / 2)
turtle.right(90)
turtle.fd(size)
turtle.left(45)
drawzig2(turtle, depth - 1, size / 2)
turtle.right(45)
turtle.bk(size)
turtle.left(90)
turtle.bk(size)
turtle.right(90)
turtle.bk(size)
turtle.left(45)
drawzig2(turtle, depth - 1, size / 2)
turtle.right(45)
turtle.fd(size)
turtle.left(90)
turtle.fd(size / 2)
turtle.right(90)
turtle.pencolor(color)
yertle = Turtle()
drawzig2(yertle, 4, 100)
screen = Screen()
screen.exitonclick()
输出