我目前的python脚本中有很多海龟。它们被命名为t1,t2,t3,t4 ......我为每只乌龟做了很多设置,所以不要打字
t1.speed(0)
t2.speed(0)
t3.speed(0)
t4.speed(0)
t1.hideturtle()
t2.hideturtle()
t3.hideturtle()
t4.hideturtle()
似乎我应该能够将它们放入列表中,
x = ["t1", "t2", "t3", "t4"]
然后让for循环做这样的事情
for i in range(0,3):
x.speed(0)
x.hideturtle()
所以它会循环4次,每次通过时都会转到x中的下一个变量。这就是我至少要做的事情。我不是最好的for循环,我已经查看了所有相关的线程和指南,但我似乎无法弄明白。
另外,我应该使用
length = len(x)
for i in range(length):
#stuff
所以我要做的就是在列表中添加一个新的乌龟,而不是必须在每个for循环中更改循环传递的数量?我希望这是有道理的,如果没有,请发表评论,我会尽我所能进行编辑。
答案 0 :(得分:4)
将变量放在列表中,而不是字符串文字:
x = [t1, t2, t3, t4]
然后你可以这样做:
for i in range(len(x)):
#stuff, like:
x[i].hideturtle()
或简单地说:
for turtle in x:
turtle.hideturtle()
# etc.
您可能还想查看使用class
。
https://docs.python.org/2/tutorial/classes.html
class turtle():
""" example of a class representing some sort of turtle """
def __init__(self):
# assign the default properties of the class
self.speed = 0
self.hidden = False
def hideturtle(self):
self.hidden = True
def unhideturtle(self):
self.hidden = False
def setspeed(self, increment):
# increase/decrease the current speed
self.speed = 0 if self.speed += increment < 0 else self.speed += increment
def stop(self):
self.speed = 0
x = turtle()
y = turtle()
x.speed, y.speed = 10, 5
x.hideturtle()
print x.speed, y.speed, x.hidden, y.hidden
>>> 10, 5, True, False
要在列表中创建5只海龟,所有海龟都会实例化为您的基础&#34;设置&#34;是:
turtles = []
for i in range(5):
turtles.append(turtle())
当然,不用说,一旦你定义了你的类turtle
对象,你现在可以根据你可能需要的条件编写可以动态添加海龟的代码。
答案 1 :(得分:1)
听起来你正在寻找的是这样的东西:
x = [t1, t2, t3, t4]
for t in x:
t.speed(0)
t.hideturtle()
x
是所有海龟的清单。执行for t in x
时,它将遍历您的列表并将t
指定为当前的乌龟,然后设置其速度并隐藏它。这样就不需要使用range(len(x))
。
答案 2 :(得分:0)
x = [t1, t2, t3, t4]
for item in x:
item.speed(0)
item.hideturtle()
或
x = [t1, t2, t3, t4]
for i in xrange(len(x)):
x[i].speed(0) # you should change the element in x, rather use x
x[i].hideturtle()
答案 3 :(得分:0)
不是将海龟的字符串表示添加到列表中,而是添加海龟对象本身。
例如
turtles = [t1, t2, t3, t4] # t1, t2, t3, and t4 are turtle objects
然后遍历海龟并调用你的方法:
for turtle in turtles:
turtle.speed(0)
turtle.hideturtle()
答案 4 :(得分:0)
turtles = [t1, t2, t3, t4]
# explicitly
for t in turtles:
t.speed(0)
# wrapped up a bit more
def turtle_do(fn):
for t in turtles:
fn(t)
turtle_do(lambda t: t.hideturtle())
答案 5 :(得分:0)
或者要简明扼要地探索lambdas的世界
turtles = [t1, t2, t3, t4]
map(lambda x: x.speed(0), turtles)
map(lambda x: x.hideTurtle(), turtles)