listplaceloc = doornum-1
coordinatelist[listplaceloc] = turtle.pos()
coordinatelist = [1,2,3,4,5,6,7,8,9,10,11,12,13,13,14,15,16,17,18,19,20,21,22,23,24]
coordlistnum = 0
turtle.goto(coordinatelist[coordlistnum])
coordlistnum +=1
turtle.pendown()
turtle.color("black")
while coordlistnum!= 24:
iter (coordinatelist[coordlistnum])
turtle.goto(coordinatelist[coordlistnum])
coordlistnum += 1
我尝试过iter函数,但它说无法iter'ed
如果我正确理解了这个问题,那么你只是想迭代
coordinatelist
,你已经在这样做了。
您可以简单地摆脱 iter (coordinatelist[coordlistnum])
,因为您已经通过实现计数器并递增它来在 while 循环中迭代 列表。
coordlistnum = 0
...
coordinatelist = [1,2,3,4,5,6,7,8,9,10,11,12,13,13,14,15,16,17,18,19,20,21,22,23,24]
while coordlistnum!= 24:
turtle.goto(coordinatelist[coordlistnum])
coordlistnum += 1
这意味着您将调用
coordinatelist
的所有元素,直到到达元素号 24(元素 1...23,因为您在进入循环之前已将 coordlistnum
递增一次,并且一旦将其递增到24 你将退出循环)
iter()
返回一个迭代器对象,它也可能是有效的,您只需在迭代器上调用 next()
并捕获异常,如下所示:
coordinatelistIter = iter(coordinatelist)
try:
while True:
coordinates = next(coordinatelistIter)
...
except StopIteration:
pass
您可能最好使用一个简单的 for 循环,同时切片列表以停在第 23 个元素
for coordinate in coordinatelist[:24]:
...
或者枚举并使用索引和值,一旦达到所需的索引就中断(退出循环):
for index, value in enumerate(coordinatelistIter):
if index > 23:
break
turtle.goto(value)