【发布时间】:2019-05-07 07:45:10
【问题描述】:
我有一些之前成功运行的 Turtle 代码,用于在 Repl.it 的 Python 中使用 Turtle IDE 绘制 Sierpinski 垫片,但最近当我尝试再次运行它时,它成功地完成了所有操作,除非它击中for 循环,turtle 刚刚开始旋转,直到很久以后才执行 for 循环中的行。
我在 forloop 中添加了一个 print(i),它重复打印 0,就好像它是一个无限循环
import turtle
from turtle import *
t = Turtle()
t.speed(0)
t.shape('turtle')
t.color('dark green')
def SGRules(char):
if char == 'F':
return 'F+F-F-F+F'
else:
return char
def processStr(oldstr, Fractal_Rules):
newstr = ""
for char in oldstr:
newstr = newstr + Fractal_Rules(char)
return newstr
def createLSystem(iteration, axiom, Fractal_Rules):
startstr = axiom
endstr = ""
for i in range(iteration):
endstr = processStr(startstr, Fractal_Rules)
startstr = endstr
return endstr
def drawLSystem(aturtle, lsys, angle, length):
for cmd in lsys:
if cmd == 'F':
aturtle.forward(length)
elif cmd == '+':
aturtle.left(angle)
elif cmd == '-':
aturtle.right(angle)
sgstr = createLSystem(4, 'F', SGRules)
print(sgstr)
drawLSystem(t, sgstr, 120, 20)
for i in range(2):
print(i)
t.left(120)
t.forward(20 * 2**4)
它应该只绘制到达右下角后剩余的外三角形的两条边。
【问题讨论】: