不知道为什么输出是1 1而不是1123?

时间:2019-03-16 00:49:56

标签: python-3.x

我进行了一个测验,以下代码的输出为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)

2 个答案:

答案 0 :(得分:2)

否,命令按顺序解释。当if条件变为true时,break退出for循环,然后才能执行print。由于break为假,因此跳过了1 % 2 == 0的前两个循环,但是2 % 2 == 0是正确的,在进入3之前退出循环,这也为true并打印...如果循环还没有退出。

答案 1 :(得分:2)

在执行break语句时,执行指针将转到循环外的下一条语句,而不是包含if语句的break块之后的语句,因此{{1}一旦执行print,就不会再调用}函数,因为该执行随后在循环之外。