0

在为我之前的问题找到解决方案后,我的 Turtle 函数遇到了几个小时的新问题。我是 Python 和 turtle 的新手,所以我不确定在哪里放置命令(即在定义函数之前或之后)所需的语法,以便它们将在 turtle 模块中实现,因为我正在尝试模拟随机乌龟比赛,但它只是不断出现空白的乌龟屏幕,中间有一只黑色的乌龟。我在做什么阻止命令工作?到目前为止,这就是我所拥有的,但我至少想知道在我尝试对其余部分进行进一步研究之前,我的第一部分是正确的:

import turtle
import random

t = turtle.Turtle('turtle')
v = turtle.Turtle('turtle')
s = turtle.Screen()
s.exitonclick()

def setup(turtle1, turtle2, s):
    t = turtle1
    v = turtle2
    s.setworldcoordinates(0,0,50,50)
    t.setposition(1,25)
    t.up()
    v.setposition(1,25)
    v.up()
    t.color('red')
    v.color('red')
    s = turtle.Screen()
    s.exitonclick()


def newHeading(turtle, angleOfTipsiness):
    t.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))
    v.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))

我需要开始的图片看起来像这样:http ://www.cs.ucsb.edu/~buoni/cs8/labs/lab02/start.JPG

谢谢!

4

1 回答 1

0

您实际上并没有调用thesetupnewHeading函数。在代码的末尾,您应该有一个如下所示的顶级块:

# ...

def newHeading(turtle, angleOfTipsiness):
    t.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))
    v.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))

# after the end of the function definitions, add this:

if __name__ == '__main__':
    # example calls, replace with ones that make sense for what
    # you're trying to do:
    setup(t, v, s)
    newHeading(t, 10)

对代码的几点说明:

  • 您的setup函数应该使用参数turtle1and turtle2,而不是将它们分配给新的局部变量tand v。(如果函数参数太长而无法一遍又一遍地键入,只需给它们更短的名称。)同样,newHeading根本不使用turtle参数。

  • t并且v混淆了局部变量的名称,因为您已经有了同名的全局变量。

  • 全局变量应该被赋予长且描述性的名称。应该为局部变量保留短名称,这些变量使用更频繁,并且在更有限的上下文中使用。

通常,您的函数可以访问全局变量并将包含的对象用作全局资源,也可以接受该对象作为参数并以这种方式使用它。在某些情况下,两者都是有效的选择(前者更简单,后者更可重用),但您不应将两者混用。如果某物是全局变量,则不要将其作为参数传递;如果它是一个参数,请使用它而不是全局变量,即使全局变量是可用的。为同一个对象混合这两种方法会使以后维护代码的人感到困惑。

于 2013-04-28T07:08:34.940 回答