在找到我之前问题的解决方案之后,我遇到了几个小时,我的Turtle功能出现了新问题。我是Python和乌龟的新手,所以我不确定在何处放置命令所需的语法(即在定义函数之前或之后),以便它们将在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
谢谢!
答案 0 :(得分:0)
您实际上正在调用 setup
或newHeading
函数。在代码的最后,您应该有一个顶级块,如下所示:
# ...
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
函数应使用参数turtle1
和turtle2
,而不是将它们分配给新的局部变量t
和v
。 (如果函数参数太长而无法反复输入,只需给它们更短的名称。)同样,newHeading
根本不使用turtle
参数。
t
和v
是局部变量的混淆名称,因为您已经拥有相同名称的全局变量。
应为全局变量提供长且具有描述性的名称。应为局部变量保留短名称,这些变量经常使用,并且在更有限的背景下使用。
通常,您的函数可以访问全局变量并将包含的对象用作全局资源,也可以将对象作为参数接受并以此方式使用它。对于某些情况,两者都是有效的选择(前者更简单,后者更可重复使用),但你不应该将两者混合使用。如果某个东西是全局变量,也不要将它作为参数传递;如果它是一个参数,则使用它而不是全局变量,即使全局可用。为同一个对象混合使用这两种方法会让稍后维护代码的人感到困惑。