Python 中代码的 continue/break 功能及其输出
functionalities of continue/ break on the code in Python and its output
对于以下程序,我知道它们是无效的,但我在询问代码的逻辑。我不是要 运行 这段代码,只是想知道它将打印的输出,以及继续/中断的功能。非常感谢你的 feedback/comment/concern。
for x in [1, 1, 2, 3, 5, 8, 13]:
if 1 < x < 13:
continue
else:
print x
输出不应该是:2,3,5,8 因为它们在 1< x< 13 范围内吗? continue 在此代码中的作用是什么?它会改变结果吗?
found = False
for n in xrange(40,50):
if (n / 45) > 1:
found = True
break
print found
我认为它会打印出 46、47、48、49、50。但是代码中的那个中断,是否只是暂停了进程?
在第一个循环中,continue
语句 跳过 循环体的其余部分,到 'continue' 进行下一次迭代。由于 1
和 13
不匹配 1 < x < 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 < x < 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
continue
使程序跳到循环的下一次迭代。因此,第一个块将打印 1 1 13,因为这些是唯一不满足 if
条件的元素。
break
终止一个循环,因此第二个片段的循环似乎应该在 46 处终止。但是,由于 python 中的整数除法只保留了整个部分,因此该循环将不间断地继续直到范围结束。
对于以下程序,我知道它们是无效的,但我在询问代码的逻辑。我不是要 运行 这段代码,只是想知道它将打印的输出,以及继续/中断的功能。非常感谢你的 feedback/comment/concern。
for x in [1, 1, 2, 3, 5, 8, 13]:
if 1 < x < 13:
continue
else:
print x
输出不应该是:2,3,5,8 因为它们在 1< x< 13 范围内吗? continue 在此代码中的作用是什么?它会改变结果吗?
found = False
for n in xrange(40,50):
if (n / 45) > 1:
found = True
break
print found
我认为它会打印出 46、47、48、49、50。但是代码中的那个中断,是否只是暂停了进程?
在第一个循环中,continue
语句 跳过 循环体的其余部分,到 'continue' 进行下一次迭代。由于 1
和 13
不匹配 1 < x < 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 < x < 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
continue
使程序跳到循环的下一次迭代。因此,第一个块将打印 1 1 13,因为这些是唯一不满足 if
条件的元素。
break
终止一个循环,因此第二个片段的循环似乎应该在 46 处终止。但是,由于 python 中的整数除法只保留了整个部分,因此该循环将不间断地继续直到范围结束。