【问题标题】:How can I move turtles created in a different function in Python?如何移动在 Python 中使用不同函数创建的海龟?
【发布时间】:2019-03-02 04:51:59
【问题描述】:

我对使用python 和一般编码非常陌生,但过去几天我一直在使用turtle。我正在尝试创建几个函数,其中其他函数移动在不同函数中创建的海龟。例如:

import turtle as t

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')

def moveTurtle():
    t1.forward(50)

setUp()
turtles()
moveTurtle()

在我的示例中,当python 下降到moveTurtles() 时,t1 无法识别,因为它是在之前的函数中创建的。如果有人能给我一些关于如何去做这件事的见解,我将非常感激。谢谢!

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    你有两个选择:

    选项 1:

    从第一种方法返回变量并将其发送到第二种方法:

    import turtle as t
    
    def setUp():
        t.setup(900,600)
        t.colormode(255)
        win = t.Screen()
    
    def turtles():
        t1 = t.Turtle()
        t1.shapesize(1.5,1.5,0)
        t1.color('red')
        t1.pensize(3)
        t1.shape('turtle')
        return t1
    
    def moveTurtle(t1):
        t1.forward(50)
    
    setUp()
    moveTurtle(turtles())
    

    选项 2:

    使用不推荐但可用的全局变量:

    import turtle as t
    
    t1 = None
    
    def setUp():
        t.setup(900,600)
        t.colormode(255)
        win = t.Screen()
    
    def turtles():
        global t1
        t1 = t.Turtle()
        t1.shapesize(1.5,1.5,0)
        t1.color('red')
        t1.pensize(3)
        t1.shape('turtle')
    
    def moveTurtle():
        t1.forward(50)
    
    setUp()
    turtles()
    moveTurtle()
    

    【讨论】:

      【解决方案2】:

      选项 3:

      Turtles 和屏幕对象是由 turtle 包设计的全局实体。 (函数返回时,函数本地的海龟不会被回收。)只需将它们设为全局,然后全局访问它们或将它们传递到需要它们的地方:

      from turtle import Screen, Turtle
      
      def setUp(w):
          w.setup(900, 600)
          w.colormode(255)
      
      def turtles(t):
          t.shapesize(1.5, 1.5, 0)
          t.color('red')
          t.pensize(3)
          t.shape('turtle')
      
      def moveTurtle(t):
          t.forward(50)
      
      win = Screen()
      t1 = Turtle()
      
      setUp(win)
      turtles(t1)
      moveTurtle(t1)
      

      【讨论】:

        猜你喜欢
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多