- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我的第一个问题,我是一个完全的初学者,所以请不要吃我:) 我想做的是使用 Python turtle 模块绘制斐波那契数列。我的代码如下:
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)
似乎表明您正在考虑弧度,这很好。但是你需要告诉你的 turtle :
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()
这不是一个完整的解决方案,只是提示您在绘制方 block 时可以做什么,这是一个基于图章的解决方案,按照不同的规则进行游戏。
关于python - 如何使用turtle模块绘制斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54544497/
我是一名优秀的程序员,十分优秀!