不确定为什么输出是1 1,而不是1123?

3
我做了一个小测验,以下代码的输出结果是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个回答

2
不,这些命令是按顺序解释的。当if条件变为真时,break会在print执行之前退出for循环。在前两个循环中,break被跳过,因为1%2 == 0是假的,但2%2 == 0为真,所以退出了循环,在到达3之前结束打印...如果循环没有已经退出的话。"最初的回答"

谢谢您的评论!现在我明白了!! - Vicky

2
break语句执行时,执行指针会跳转到循环外的下一条语句,而不是包含break语句的if块后面的语句,因此一旦执行break语句,执行就在循环之外了,print函数就不会被调用。"最初的回答"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接