Python 代码及其输出的 continue/break 功能

Posted

技术标签:

【中文标题】Python 代码及其输出的 continue/break 功能【英文标题】:functionalities of continue/ break on the code in Python and its output 【发布时间】:2015-09-22 20:15:41 【问题描述】:

对于以下程序,我知道它们无效,但我在询问代码的逻辑。我并不是要运行这段代码,只是想知道它应该打印的输出,以及 continue/break 的功能。感谢您对此的反馈/评论/关注。

for x in [1, 1, 2, 3, 5, 8, 13]:
    if 1 < x < 13:
        continue
    else:
        print x

输出不应该是:2、3、5、8,因为它们在 1

found = False
for n in xrange(40,50):
    if (n / 45) > 1:
        found = True
        break
print found

我认为它会打印出 46、47、48、49、50。但是代码中的中断,是否只是让进程暂停?

【问题讨论】:

continue 表示“跳过本回合的剩余部分并从下一回合继续循环”。 break 表示“退出整个循环”。 @khelwood 感谢您的评论。我明白了,然后第二个会打印出 True,我想? @khelwood 第一个会打印出 1, 1, 2, 3, 5, 8, 13?因为它只是打印 x @khelwood 提前感谢您的纠正 " 第一个会打印出 1, 1, 2, 3, 5, 8, 13? " -- 不,不会。请参阅我的第一条评论。 【参考方案1】:

在第一个循环中,continue 语句跳过 循环体的其余部分,以“继续”下一次迭代。由于1131 &lt; x &lt; 13 链式比较不匹配,因此实际只打印前2 个和最后一个值,其余的被跳过。

continue 在这里并不重要,print 仅在 else 套件中执行无论如何;你也可以使用pass 而不是continue

for x in [1, 1, 2, 3, 5, 8, 13]:
    if 1 < x < 13:
        pass
    else:
        print x

或使用if not (1 &lt; x &lt; 13): print x

在第二个循环中,break 结束整个循环。没有打印数字(没有任何地方的print n),只有print found 语句打印的False。这是因为在 Python 2 中 / 使用整数只给你 地板除法 所以 if 语句永远不会变成真的(只有当 n = 90 或更大时,n / 45 才会变成 2 或更大)。

两个语句的更好说明是在循环之前使用print,在语句之前和之后的循环中,然后打印,这样你就可以看到什么时候执行的代码:

print 'Before the loop'
for i in range(5):
    print 'Start of the loop, i = '.format(i)
    if i == 2:
        print 'i is set to 2, continuing with the next iteration'
        continue
    if i == 3:
        print 'i is set to 3, breaking out of the loop'
        break
    print 'End of the loop'
print 'Loop has completed'

哪个输出:

Start of the loop, i = 0
End of the loop
Start of the loop, i = 1
End of the loop
Start of the loop, i = 2
i is set to 2, continuing with the next iteration
Start of the loop, i = 3
i is set to 3, breaking out of the loop
Loop has completed

注意i = 2后面没有End of the loop,也根本没有i = 4

【讨论】:

【参考方案2】:

continue 使程序跳到循环的下一次迭代。因此,第一个块将打印 1 1 13,因为这些是唯一不满足 if 条件的元素。

break 终止了一个循环,因此第二个 sn-p 的循环似乎应该在 46 处终止。但是,由于 python 中的整数除法只保留整个部分,因此该循环将不间断地继续直到范围结束.

【讨论】:

以上是关于Python 代码及其输出的 continue/break 功能的主要内容,如果未能解决你的问题,请参考以下文章

Python列表倒序输出及其效率

Python随机产生10个70-100的数并输出,找出其中的最小值及其第一次出现的位置?

python输入小写字符串,输出字符串中出现字母最多的字母及其出现次数,如果有多

学习经验分享NO.16超全代码-python画Sigmoid,ReLU,Tanh等十多种激活函数曲线及其梯度曲线(持续更新)

31个全网最常用python实现(体系学习,学完显著提高代码复用能力)

Python中if语句用法及其实例「详细」