我正在尝试用Python创建一个海龟列表。我可以通过以下方式手动实现:
import turtle
wn = turtle.Screen()
one = turtle.Turtle()
two = turtle.Turtle()
我希望使用以下for循环遍历一个海龟名称列表,但语法却在抛弃我:
import turtle
wn = turtle.Screen()
for turtleName in ["one","two"]:
turtleName = turtle.Turtle()
one.left(60)
one.forward(160)
NameError: name 'one' is not defined
答案 0 :(得分:2)
当你这样做时
for turtleName in ["one","two"]:
turtleName = turtle.Turtle()
你正在这个循环中创建一个变量,并且对于列表中的每个值,它都会得到它的值。
例如,在第一次迭代中,turtleName中的值将为“1”,而在第二次迭代中,它将为“2”。
当你这样做时
turtleName = turtle.Turtle()
您正在覆盖循环给出的turtleName值。
你想要的是动态创建变量,我不知道是否可能,但你可以使用dict做一些你想要的东西,例如,你可以试试
names = ['one', 'two']
turtle_dict = dict()
for name in names:
turtle_dict[name] = turtle.Turtle()
所以,当你想通过它的名字叫乌龟时,你可以做到
turtle_dict['one'].left(60)
或
turtle_dict['two'].left(60)
有关dict如何工作的更多信息,您可以查看official documentation。
我希望这会有所帮助:)
答案 1 :(得分:1)
你在
尝试做什么for turtleName in ["one","two"]:
turtleName = turtle.Turtle()
将变量turtleName赋值为“one”。 就像juanpa.arrivillaga所说的那样,使用字典。
import turtle
wn = turtle.Screen()
dict = {}
for turtleName in ["one","two"]:
dict[turtleName] = turtle.Turtle()
dict["one"].left(60)
dict["two"].forward(160)