错误的for循环

2024-10-16 22:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

src = max(gameinfo.my_planets.values(), key=lambda p: p.num_ships)
dest = min(gameinfo.not_my_planets.values(), key=lambda p:p.num_ships)

if len(gameinfo.my_fleets) > 0:

for fleet in gameinfo.my_fleets.values(): 
    print fleet.dest.id
    self.dests.append(fleet.dest)

    for i, value in self.dests:
        print value.id
        while value == dest:
           self.dests[i] = choice(gameinfo.enemy_planets.values())

    for i, fleet in gameinfo.my_fleets.values(): 
        gamefleet.fleet_order(fleet, self.dests[i], int(fleet.num_ships))


    # clear for now
    self.dests = []
    return

问题是最后两个for循环不确定要做什么。。。获取“not iterable”错误。逻辑是正确的,但只是不确定我是否有一个关键字错误或什么。整晚都在做这个!你知道吗


Tags: keyinselfforvaluemynumdest
2条回答

如果不知道self.destsgameinfo.my_fleets.values()中的值是什么,很难说是肯定的,但我猜应该是:

for i, value in self.dests:

你真的想要:

for i, value in enumerate(self.dests):

对于另一个for循环也是如此。你知道吗

为了实现这一点,self.destsgameinfo.my_fleets.values()需要是或者需要返回被称为python iterables的对象,比如字符串和列表,您可以对它们进行迭代(在本例中可能是大小为2的元组列表,请查看您的代码)。不幸的是,这两个不是-或者不是返回-iterable对象。因此,您必须研究它们为什么不存在,或者您是否应该对它们进行迭代。你知道吗

下面是一个堆栈溢出问题,讨论如何识别程序中的变量是否是iterable对象。在这里应该会有所帮助:

相关问题 更多 >