zmq 发表于 2020-7-9 18:56:50

009

while True:
    while True:
      break
      print(1)
    print(2)
    break
print(3)
复制代码
会打印:
2
3

因为 break 只能跳出一层循环,记住咯!

这个解释没太看懂。。。。

Twilight6 发表于 2020-7-9 18:59:21

本帖最后由 Twilight6 于 2020-7-9 19:03 编辑



你这里两个 while 循环,内嵌的循环里面有 break 所以 break 只会退出内部的那个小循环,不影响外部的大循环

你外部的大循环下也有 break ,所以此时再次退出一层循环

在循环中,只要一遇到 break 同循环中下面的代码就不在执了


while True:
    while True:
      break   # 这里只会退出所在的循环中的循环体,即这个 break 所在的是内层循环,所以退出的是里面的循环
      print(1)
    print(2)
    break# 同理,这里只会退出所在的循环中的循环体,即这个 break 所在的是最外层循环,所以退出的是最外面的循环
print(3)

liuzhengyuan 发表于 2020-7-9 19:01:55

while True: # 把这个循环标记为 1 号循环
    while True: # 把这个循环标记为 2 号循环
      break # 把这个循环标记为 1 号 break
      print(1)
    print(2)
    break # 把这个循环标记为 2 号 break
print(3)

1 号 break 可以做到跳出 2 号循环,但是它不能做到直接跳出 1 号 2 号 两层循环

必须得在 1 号循环内 在放置一个 2 号 break,才能做到跳出 1 号循环

zmq 发表于 2020-7-9 19:04:13

liuzhengyuan 发表于 2020-7-9 19:01
while True: # 把这个循环标记为 1 号循环
    while True: # 把这个循环标记为 2 号循环
      break...

谢谢你的回复,能否在解释一下为啥打印结果是2,3呢?

liuzhengyuan 发表于 2020-7-9 19:05:22

zmq 发表于 2020-7-9 19:04
谢谢你的回复,能否在解释一下为啥打印结果是2,3呢?

因为 2 号循环中 break 在 print 的前面

还没有输出 1,就已经跳出循环了

永恒的蓝色梦想 发表于 2020-7-9 19:11:55

楼上都是正解

小甲鱼的铁粉 发表于 2020-7-9 19:25:38

{:10_249:}

WangJS 发表于 2020-7-9 19:38:19

永恒的蓝色梦想 发表于 2020-7-9 19:11
楼上都是正解

你这……{:10_250:}

WangJS 发表于 2020-7-9 19:43:14

首先要确定3是肯定会在最后印出来的
然后再来看循环

while True:         #一层
    while True:   #二层
      break
      print(1)
    print(2)
    break
执行过程……

开始执行一层循环……
开始执行二层循环……
跳出二层循环……
打印"2"……
跳出一层循环……
打印"3"
页: [1]
查看完整版本: 009