我进行了一个测验,以下代码的输出为1 1
而不是1 1 2 3
。对此答案的解释是,当代码遇到break
(到达2
时),则循环停止。
我知道循环在到达2
时就停止了,但是由于print()
与if()
语句具有相同的缩进,因此我认为它们是分开执行的,
(但两者仍在for
循环下)。因此,当number
到达2
时,即使循环停止,它仍将执行print()
,因为它仍处于for
循环之下。因此,结果是1 1 2 3
。而且无论if()
是什么语句,结果都是相同的。
numbers = [1, 1, 2, 3]
for number in numbers:
if number % 2 == 0:
break
print(number)
答案 0 :(得分:2)
否,命令按顺序解释。当if
条件变为true时,break
退出for
循环,然后才能执行print
。由于break
为假,因此跳过了1 % 2 == 0
的前两个循环,但是2 % 2 == 0
是正确的,在进入3
之前退出循环,这也为true并打印...如果循环还没有退出。
答案 1 :(得分:2)
在执行break
语句时,执行指针将转到循环外的下一条语句,而不是包含if
语句的break
块之后的语句,因此{{1}一旦执行print
,就不会再调用}函数,因为该执行随后在循环之外。