import turtle def createLSystem(numIters, axiom): if numIters == 0: return axiom else: return createLSystem(numIters - 1, processString(axiom)) def processString(oldStr): newstr = "" for ch in oldStr: newstr = newstr + applyRules(ch) return newstr def applyRules(ch): newstr = "" if ch == 'F': newstr = 'F-F++F-F' # Rule 1 else: newstr = ch # no rules apply so keep the character return newstr def drawLsystem(aTurtle, instructions, angle, distance): for cmd in instructions: if cmd == 'F': aTurtle.forward(distance) elif cmd == 'B': aTurtle.backward(distance) elif cmd == '+': aTurtle.right(angle) elif cmd == '-': aTurtle.left(angle) def main(): inst = createLSystem(4, "F--F--F") t = turtle.Turtle() wn = turtle.Screen() t.up() t.back(200) t.down() t.speed(9) drawLsystem(t, inst, 60, 5) wn.exitonclick() main()