首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在成功的尝试中退出下一个循环迭代

在成功的尝试中退出下一个循环迭代
EN

Stack Overflow用户
提问于 2017-07-26 10:08:35
回答 2查看 4.4K关注 0票数 2

如果这件事在别的地方被回答了,我很抱歉,但我找不到。

我有一个for循环,它从OverPass数据库中查询一些点,然后根据返回情况为每个点分配一些值。由于所有点的返回在其标记中并不是一致的,所以我使用一系列try-catch语句来评估标记是否存在、它的值是什么以及指定的值应该是什么。标签以字典形式出现,但没有统一的键集。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for lat, lon in zip(df['PosLat'], df['PosLon']):
...
...
    if result.ways:
        way = result.ways[0]
        try:
            if dict[key1] == value1:
                #append values to lists
                continue
            elif dict[key1] == value2:
                #append different values to lists
                continue
            else:
                pass
        except KeyError:
            pass
        try:
            if dict[key2] == value1:
                #append values to lists
                continue
            elif dict[key2] == value2:
                #append different values to lists
                continue
            elif dict[key2] == value3:
                #append still different values to lists
            else:
                pass
        except KeyError:
            pass

我想要做的是在try块成功完成时退出for循环的当前迭代,如果没有完成或抛出异常,则继续进行相同的迭代。正如我的代码现在所处的位置,在每次迭代时,多个值被附加到list1list2。我尝试过continuebreak,但是continue似乎要么退出if-语句,要么返回try块,break退出整个for-循环。

我也试着嵌套那些试图捕捉的语句,但这似乎变得非常混乱和重复。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-26 10:15:47

我不完全理解您的问题,但听起来您可能对continuebreak有误解。一旦你了解了它们的工作原理,它们就很简单,我希望在解释完之后,你就能够用它们来实现你的目标了。

继续进行

continue只需停止当前的迭代,然后进入下一个迭代的开始。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(10):
    if i == 5:
        continue
    print(i)

0
1
2
3
4
6 # It skipped 5!
7
8
9

中断

break将退出整个循环,因此之后不会发生其他迭代。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(10):
    if i == 5:
        break
    print(i)

0
1
2
3
4
# The entire loop stopped at 5
票数 3
EN

Stack Overflow用户

发布于 2017-07-26 10:46:11

编造玩具例子的joy说,有时候你会发现你的源代码出了什么问题。结果我还是在使用continue,所发生的是,通过跳过其余的迭代,我没有为下一次迭代正确地更新下游的所有内容。因此,continue没有退出循环的想法。

所以鸡蛋在我脸上。谢谢你们的帮助,伙计们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45334484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文