这是我的第一个问题,直到永远,我是一个彻头彻尾的初学者,所以请不要吃我:)我试图向是绘制使用Python乌龟模块斐波纳契数列。我的代码如下:
import turtle
zuf = turtle.Turtle()
while True:
zuf.forward(10)
zuf.left(3.1415)
然而,这带动周围只有圈。我试图创建一个变量,比如X,并指定一个斐波那契规则给它,然后xn = xn-1 + xn-2
我把它放在这里zuf.forward(x)
,但它不工作。我想的是多种变化,但没有一个似乎工作。请不要放弃一个整体解决方案,只有一些提示,非常感谢。
我想我可以从你的地方,你想从哪里得到你。首先,你的调用:
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)
如果你组装这一切都正确,你应该结束了,像一个数字:
表示斐波那契数值的增加的尺寸。不是最大的看图像,你仍然必须做了一些工作,以清理,看起来不错。
最后,我留下了深刻印象斐波纳契绘图代码@ 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()
这是不是对你的整体解决方案,这仅是可以根据你绘制你的方块来完成,这是一个基于时间戳的解决方案,它通过不同的规则起到了暗示。