paulwang 发表于 2022-10-20 12:17:03

while else 问题

a=0
while a<3:
        print(a)
        a+=1
else:
        break

我的问题是 while 的部分会自动循环到结束, 这个时候 else部分再执行的break 是作用与对上一层循环体吗? 为什么

jackz007 发表于 2022-10-20 12:33:32

本帖最后由 jackz007 于 2022-10-20 12:35 编辑

while condition:
......
else:
       每次循环要先判断 condition 的值,当 condition 为 True 时,进入(或继续)循环,否则,进入并执行属于 else 的语句。
       就本例而言,在 a < 3 的时候正常循环,到 a = 3 的时候,进入 else,执行 break

paulwang 发表于 2022-10-20 13:41:15

jackz007 发表于 2022-10-20 12:33
每次循环要先判断 condition 的值,当 condition 为 True 时,进入(或继续)循环,否则,进入并 ...

这个我是知道的,但是a==3的时候已经跳出循环了, 那么这个时候再执行break的话那就是跳出上一级循环(如果有的话)了吗?
比如说下面这个 按道理break 只跳出一层循环, 但这个我运行起来好像是跳出了最外层的循环
a=0
b=3
while b< 5:
       while a<3:
             print(a)
             a+=1
       else:
            break
       b+=1

jackz007 发表于 2022-10-20 13:47:12

本帖最后由 jackz007 于 2022-10-20 13:50 编辑

paulwang 发表于 2022-10-20 13:41
这个我是知道的,但是a==3的时候已经跳出循环了, 那么这个时候再执行break的话那就是跳出上一级循环(如 ...

       当然,如果这个 while 属于一个循环的内嵌循环的话,break 就是跳出这个外层循环。

paulwang 发表于 2022-10-20 17:40:14

jackz007 发表于 2022-10-20 13:47
当然,如果这个 while 属于一个循环的内嵌循环的话,break 就是跳出这个外层循环。

我也刚觉应该是这样的, 但是我测试了一下
>>> a=0
>>> b=0
>>> while b<10:
        while a<5:
                print(a)
                a+=1
                b+=1
        else:
                break
        print(b)
显示的结果为
0
1
2
3
4
如果break 只跳出前面的循环的话 b的值应 5 应该被一直打印的,但情况是直接跳出外层循环了。
大神你验证下是不是这样所以我才疑惑

jackz007 发表于 2022-10-20 18:08:20

paulwang 发表于 2022-10-20 17:40
我也刚觉应该是这样的, 但是我测试了一下
>>> a=0
>>> b=0


         这个不用验证,就是在 a 和 b 的值为 5 的时候结束所有的循环。

paulwang 发表于 2022-10-20 18:36:30

jackz007 发表于 2022-10-20 18:08
这个不用验证,就是在 a 和 b 的值为 5 的时候结束所有的循环。

上面的显示好像是缩进错误了应该是下面这个
跳出所有循环,也就是说这里的break 其实是执行的是 直接跳出外层循环的并不是对应内层, 对吗?
a=0
b=0
while b<10:
      while a<5:
                print(a)
                a+=1
                b+=1
      else:
                break
      print(b)
显示的结果为
0
1
2
3
4

jackz007 发表于 2022-10-20 18:48:26

paulwang 发表于 2022-10-20 18:36
上面的显示好像是缩进错误了应该是下面这个
跳出所有循环,也就是说这里的break 其实是执行的是 直接跳 ...

      没错,break 在内层 while 以外,一旦执行是要跳出外层循环的。如果不在循环以内,执行 break 会出错的。

LJS1996 发表于 2022-10-22 10:12:12

break 直接就跳出循环了

gogo57913 发表于 2022-10-23 00:21:20

没有if 怎么用else啊
页: [1]
查看完整版本: while else 问题