[英]Python Turtle for loop running infinitely
我有一些Turtle代碼已經成功運行過,然后才能在Repl.it的Python中使用Turtle IDE繪制Sierpinski密封墊,但是最近當我再次嘗試運行它時,它成功完成了所有工作,除非遇到了for循環,烏龜只是開始旋轉,直到很久以后才執行for循環中的行。
我已將print(i)添加到forloop中,並且它反復打印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)
一旦到達右下角,它應該只繪制剩余的外部三角形的2個邊。
您的代碼清理對我而言在repl.it和Python控制台中運行良好:
from turtle import Screen, Turtle
ANGLE = 120
LENGTH = 20
ITERATIONS = 4
def SGRules(character):
if character == 'F':
return 'F+F-F-F+F'
return character
def processStr(string, rules):
new_string = ""
for character in string:
new_string += rules(character)
return new_string
def createLSystem(iterations, axiom, rules):
string = ""
for _ in range(iterations):
string = processStr(axiom, rules)
axiom = string
return string
def drawLSystem(turtle, lsys, angle, length):
for command in lsys:
if command == 'F':
turtle.forward(length)
elif command == '+':
turtle.left(angle)
elif command == '-':
turtle.right(angle)
yertle = Turtle('turtle')
yertle.speed('fastest')
yertle.shape('turtle')
yertle.color('dark green', 'light green')
sg_string = createLSystem(ITERATIONS, 'F', SGRules)
print(sg_string)
drawLSystem(yertle, sg_string, ANGLE, LENGTH)
for _ in range(2):
yertle.left(ANGLE)
yertle.forward(LENGTH * 2 ** ITERATIONS)
screen = Screen()
screen.mainloop()
盡管一旦我在末尾向tkinter的事件循環中添加了轉移以防止窗口關閉,您的原始代碼在Python控制台中的運行情況就很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.