while else 问题
a=0while a<3:
print(a)
a+=1
else:
break
我的问题是 while 的部分会自动循环到结束, 这个时候 else部分再执行的break 是作用与对上一层循环体吗? 为什么
本帖最后由 jackz007 于 2022-10-20 12:35 编辑
while condition:
......
else:
每次循环要先判断 condition 的值,当 condition 为 True 时,进入(或继续)循环,否则,进入并执行属于 else 的语句。
就本例而言,在 a < 3 的时候正常循环,到 a = 3 的时候,进入 else,执行 break 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:50 编辑
paulwang 发表于 2022-10-20 13:41
这个我是知道的,但是a==3的时候已经跳出循环了, 那么这个时候再执行break的话那就是跳出上一级循环(如 ...
当然,如果这个 while 属于一个循环的内嵌循环的话,break 就是跳出这个外层循环。 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 应该被一直打印的,但情况是直接跳出外层循环了。
大神你验证下是不是这样所以我才疑惑 paulwang 发表于 2022-10-20 17:40
我也刚觉应该是这样的, 但是我测试了一下
>>> a=0
>>> b=0
这个不用验证,就是在 a 和 b 的值为 5 的时候结束所有的循环。 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 paulwang 发表于 2022-10-20 18:36
上面的显示好像是缩进错误了应该是下面这个
跳出所有循环,也就是说这里的break 其实是执行的是 直接跳 ...
没错,break 在内层 while 以外,一旦执行是要跳出外层循环的。如果不在循环以内,执行 break 会出错的。 break 直接就跳出循环了 没有if 怎么用else啊
页:
[1]