首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不确定为什么输出是11,而不是1123?

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

Stack Overflow用户
提问于 2019-03-16 08:49:56
回答 2查看 29关注 0票数 3

我做了个测试,下面这段代码的输出是1 1而不是1 1 2 3。这个答案的解释是,当代码遇到break(当它到达2时),那么循环就会停止。

我知道循环在到达2时会停止,但由于print()具有与if()语句相同的缩进,所以我认为它们是分开执行的(但两者仍在for循环下)。因此,当number到达2时,即使循环停止,它仍然会执行print(),因为它仍然在for循环下。因此,结果就是1 1 2 3。无论if()语句是什么,结果都是一样的。

代码语言:javascript
运行
复制
numbers = [1, 1, 2, 3]
for number in numbers:
  if number % 2 == 0:
    break
  print(number)
EN

回答 2

Stack Overflow用户

发布于 2019-03-16 08:54:45

不,命令是按顺序解释的。当if条件为真时,break将在for执行之前退出print循环。前两个循环break被跳过,因为1 % 2 == 0为false,但2 % 2 == 0为true,在到达3之前退出循环,这也将是true并打印...如果循环还没有退出。

票数 2
EN

Stack Overflow用户

发布于 2019-03-16 08:55:16

break语句执行时,执行指针指向循环外的下一条语句,而不是包含break语句的if块之后的语句,因此一旦执行break,就不会调用print函数,因为此时执行是在循环外。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55192425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档