我认为我可以帮助您从现在所处的位置到达您想要的位置。首先,您需要调用以下内容:
zuf.left(3.1415)
似乎表明您正在使用弧度进行思考,这很好。但您需要告诉您的海龟:
zuf = turtle.Turtle()
zuf.radians()
这仍会使您的代码进入循环,但是进入的是非常不同的循环。接下来,我们想要用斐波那契值替换
10
。在
while
循环之前,初始化您的斐波那契计数器:
previous, current = 0, 1
作为while循环中的最后一条语句,将它们提升:
previous, current = current, current + previous
在你的
forward()
调用中,将
10
替换为
current
。接下来,我们需要将它绘制的线条变成正方形。为此,我们需要做两件事情。首先,将绘图代码循环四次:
for i in range(4):
zuf.forward(current)
zuf.left(3.1415)
其次,将您的角度替换为pi/2:
zuf.left(3.1415 / 2)
如果您正确组装所有部件,您应该得到一个如下图所示的图形:
![enter image description here](https://istack.dev59.com/WCiUU.webp)
展示斐波那契数值增加的大小。图片不是最好看的,您仍然需要进行一些工作来清理它,使其看起来漂亮。
最后,我印象深刻的是@IvanS95在他的评论中提供了斐波那契绘图代码,我编写了一个高速版本,它使用
盖章而不是
绘制。
from turtle import Screen, Turtle
SCALE = 5
CURSOR_SIZE = 20
square = Turtle('square', visible=False)
square.fillcolor('white')
square.speed('fastest')
square.right(90)
square.penup()
previous_scaled, previous, current = 0, 0, 1
for _ in range(10):
current_scaled = current * SCALE
square.forward(current_scaled/2 + previous_scaled/2)
square.shapesize(current_scaled / CURSOR_SIZE)
square.left(90)
square.forward(current_scaled/2 - previous_scaled/2)
square.stamp()
previous_scaled, previous, current = current_scaled, current, current + previous
screen = Screen()
screen.exitonclick()
![enter image description here](https://istack.dev59.com/JkdOk.webp)
这并不是一个完整的解决方案,只是一个提示,可以在绘制正方形时使用。这是一种基于印章的解决方案,遵循不同的规则。
for
循环 :) 祝你好运 - IvanS95循环开始
while True:海龟前进
zuf.forward(y)海龟左转
zuf.left(3.1415) # 此处似乎不起作用 - Ejdzbikej