На своем самом базовом c, 0-м уровне, фрактальная процедура должна просто нарисовать прямую линию, используя forward()
(он же fd()
). На уровне 1 он должен нарисовать базовый паттерн c, который составляет фрактал, , но , используя саму фрактальную процедуру для рисования линий, а не forward()
. Каждый уровень выше делает то же самое. Мы заменяем рисование линий на фрактальное:
from turtle import *
def peano(level, length):
if level == 0:
forward(length)
else:
angle = 90
peano(level-1, length/3)
right(angle)
peano(level-1, length/3)
for _ in range(2):
for _ in range(3):
left(angle)
peano(level-1, length/3)
angle = -angle
left(angle)
peano(level-1, length/3)
# Starting position and angle to fill our window
penup()
goto(-220, 220)
pendown()
right(45)
peano(2, 600)
exitonclick()
Вам не нужны вложенные циклы, которые я добавил, вы можете явно написать шаги:
else:
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
right(90)
peano(level-1, length/3)
left(90)
peano(level-1, length/3)