我需要将列表中需要按一定顺序排列的整数坐标转换为可迭代对象,以便海龟可以转到这些坐标

问题描述 投票:0回答:1
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

python coordinates turtle-graphics python-turtle
1个回答
0
投票

如果我正确理解了这个问题,那么你只是想迭代

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)
© www.soinside.com 2019 - 2024. All rights reserved.