我做了个测试,下面这段代码的输出是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)发布于 2019-03-16 08:54:45
不,命令是按顺序解释的。当if条件为真时,break将在for执行之前退出print循环。前两个循环break被跳过,因为1 % 2 == 0为false,但2 % 2 == 0为true,在到达3之前退出循环,这也将是true并打印...如果循环还没有退出。
发布于 2019-03-16 08:55:16
当break语句执行时,执行指针指向循环外的下一条语句,而不是包含break语句的if块之后的语句,因此一旦执行break,就不会调用print函数,因为此时执行是在循环外。
https://stackoverflow.com/questions/55192425
复制相似问题