Я думаю, что смогу доставить тебя туда, где ты хочешь быть.Во-первых, ваш вызов:
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)
Если вы соберете все это правильно, вы должны получитьс цифрой вроде:
, показывающая увеличивающийся размер значений Фибоначчи.Не самое привлекательное изображение, вам все равно придется поработать над ним, чтобы очистить его, чтобы он выглядел красиво.
Наконец, я был впечатлен кодом рисования fibonacci, на который @ 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()
Это не целое решение для вас, а лишь намек на то, что можно сделать, когда вы рисуете свои квадраты, и это решение на основе штампов, которое играет по другим правилам.