如何加速python';s';海龟';功能,并在结束时停止冻结

如何加速python';s';海龟';功能,并在结束时停止冻结,python,graphics,draw,turtle-graphics,Python,Graphics,Draw,Turtle Graphics,我已经用python编写了一个海龟程序,但是有两个问题 对于较大的数字来说,速度太慢了,我想知道如何才能加快速度 它在完成后会冻结,点击后会显示“无响应” 这是我目前的代码: import turtle #Takes user input to decide how many squares are needed f=int(input("How many squares do you want?")) c=int(input("What colour would you like? red

我已经用python编写了一个海龟程序,但是有两个问题

  • 对于较大的数字来说,速度太慢了,我想知道如何才能加快速度
  • 它在完成后会冻结,点击后会显示“无响应”
  • 这是我目前的代码:

    import turtle
    
    #Takes user input to decide how many squares are needed
    f=int(input("How many squares do you want?"))
    c=int(input("What colour would you like? red = 1, blue = 2 and green =3"))
    n=int(input("What background colour would you like? red = 1, blue = 2 and green =3"))
    
    i=1
    
    x=65
    
    #Draws the desired number of squares.
    while i < f:
        i=i+1
        x=x*1.05
        print ("minimise this window ASAP")
        if c==1:
            turtle.pencolor("red")
        elif c==2:
            turtle.pencolor("blue")
        elif c==3:
            turtle.pencolor("green")
        else:
            turtle.pencolor("black")
        if n==1:
            turtle.fillcolor("red")
        elif n==2:
            turtle.fillcolor("blue")
        elif n==3:
            turtle.fillcolor("green")
        else:
            turtle.fillcolor("white")
        turtle.bk(x)
        turtle.rt(90)
        turtle.bk(x)
        turtle.rt(90)
        turtle.bk(x)
        turtle.rt(90)
        turtle.bk(x)
        turtle.rt(90)
        turtle.up()
        turtle.rt(9)
        turtle.down()
    
    导入海龟
    #使用用户输入来决定需要多少方块
    f=int(输入(“您想要多少个正方形?”)
    c=int(输入(“您想要什么颜色?红色=1,蓝色=2,绿色=3”))
    n=int(输入(“您想要什么背景颜色?红色=1,蓝色=2,绿色=3”))
    i=1
    x=65
    #绘制所需数量的正方形。
    而i
    顺便说一下:我在3.2版上

  • turtle.speed()
    设置为
    faster
  • 使用
    turtle.mainloop()
    功能在不刷新屏幕的情况下完成工作
  • 使用
    turtle.tracer(0,0)
    禁用屏幕刷新,然后在末尾执行
    turtle.update()

  • 作为参考,海龟行动缓慢是一个存在的问题。 即使将“速度”设置为“最大”,海龟也会花很长时间处理分形等问题。 Nick ODell在这里重新实现了龟速:


    Python turtle运行非常缓慢,因为每次对turtle进行修改后都会执行屏幕刷新。

    您可以禁用屏幕刷新,直到所有工作完成,然后绘制屏幕,这将消除毫秒延迟,因为屏幕会疯狂地尝试从每次更改中更新屏幕

    例如:

    import turtle
    import random
    import time
    screen = turtle.Screen()
    
    turtlepower = []
    
    turtle.tracer(0, 0)
    for i in range(1000):
        t = turtle.Turtle()
        t.goto(random.random()*500, random.random()*1000)
        turtlepower.append(t)
    
    for i in range(1000):
        turtle.stamp()
    
    turtle.update()
    
    time.sleep(3)
    
    这段代码在任意位置生成一千只海龟,并在大约200毫秒内显示图片

    如果您没有使用
    turtle.tracer(0,0)
    命令禁用屏幕刷新,它将花费几分钟时间尝试刷新屏幕3000次


    我不能真正解决速度问题,但是可以使用
    乌龟来防止冰冻。done()
    在文件末尾,谢谢

    如果您正在使用更新版本的turtle,turtle对象没有tracer属性。您必须为屏幕对象设置跟踪器属性。在保持动画可见的情况下,它能以多快的速度运行?
    import turtle
    import random
    import time
    screen = turtle.Screen()
    
    turtlepower = []
    
    turtle.tracer(0, 0)
    for i in range(1000):
        t = turtle.Turtle()
        t.goto(random.random()*500, random.random()*1000)
        turtlepower.append(t)
    
    for i in range(1000):
        turtle.stamp()
    
    turtle.update()
    
    time.sleep(3)