3 回答
TA贡献1895条经验 获得超3个赞
也许是这样的?
def moveAll(shapeList, dx, dy):
while shapeList:
shape = shapeList.pop(0)
shape.move(dx, dy)
只要列表中有项目,我们就会删除一个并处理它。
不过,这个for循环可能更高效也更惯用。
TA贡献1804条经验 获得超8个赞
奇怪的问题,奇怪的答案嘿嘿
def moveAll(shapeList, dx, dy):
try:
ilist = iter(shapeList)
while True:
shape = next(ilist)
shape.move(dx, dy)
except:
pass # done
TA贡献1836条经验 获得超3个赞
在while你的代码的循环版本中,shape变量被初始化为一个列表,所以它自然没有move方法。要将您的for循环转换为while基本上是关于迭代形状对象列表的循环,您可以将列表转换为collections.deque对象,以便您可以有效地将形状对象队列出列,直到它为空:
from collections import deque
def moveAll(shapeList, dx, dy):
queue = deque(shapeList)
while queue:
shape = queue.popleft()
shape.move(dx, dy)
添加回答
举报