关于for和else
for a in range(5,8):
print(a)
for i in range(5):
if i>5:
print(i)
break
else:
print('欧尼酱')
请问哥哥们为什么上面那段代码可以出来欧尼酱下面的欧尼酱出不来呢???
for a in range(5,8):
print(a)
for i in range(5):
if i<3:
print(i)
break
else:
print('欧尼酱')
可使那个else和break不是同一层循环吧,为什么else会执行不了呢 支离疏哈哈哈 发表于 2020-4-25 23:09
可使那个else和break不是同一层循环吧,为什么else会执行不了呢
而且break不是只破坏了那层if循环吗 break破坏的是while和for循环 !!!哥哥们我知道了,我自己想出来了哈哈哈能奖励我棒棒糖吗hhh
1.for循环每次被break后都会从头开始2.若是for内层有条件语句,他会一直循环直到达到条件语句,或者循环到最后一位。3.和for一层的else,只有当for循环到最后一位时才会执行4.循环是从头开始的,线性的,虽然break的只是if层,但是前面的for已经执行过了,所以从头开始
关于第四点还不太确定 我棒吗 我想了好久啊。。太笨了{:9_221:} 1241702927 发表于 2020-4-25 23:29
break破坏的是while和for循环
不对哦,如果破坏的是for循环那第一个的话欧尼酱是出不来的 支离疏哈哈哈 发表于 2020-4-25 23:41
不对哦,如果破坏的是for循环那第一个的话欧尼酱是出不来的
是吧 支离疏哈哈哈 发表于 2020-4-25 23:36
!!!哥哥们我知道了,我自己想出来了哈哈哈能奖励我棒棒糖吗hhh
1.for循环每次被break后都会从头开始2 ...
1.for循环每次被break后都会从头开始
错,break会立刻终止最近的一层for或者while循环,包括or或者while同级的else一样都被抛弃,直接跳到循环结束后的语句,从头开始的是continue。
2.若是for内层有条件语句,他会一直循环直到达到条件语句,或者循环到最后一位。
循环体里有条件语句,会正常执行,只要其中没有被break或continue被执行,循环就会继续,不会受到任何影响,直到循环结束。
3.和for一层的else,只有当for循环到最后一位时才会执行
是的,只要正常运行完循环就会执行else,如果被break中断就没有else什么事了。
4.循环是从头开始的,线性的,虽然break的只是if层,但是前面的for已经执行过了,所以从头开始
见1. break只会对最近一级的for或者while循环有效,放弃未执行的任何循环,直接退出循环体。
代码1,因为i的范围是0-4,所以i>5是False,所以print和break语句没有被执行,正常循环完了,什么没做,最后就打印了'欧尼酱'。
代码2,第1次循环,i为0,i<3是True,打印了个0然后执行break退出循环,else和for i 这是同一级的,属于同一个循环,所以也没有执行。 else 是在循环语句没有break,完整执行完成后,就执行。第一个显然,i 是从0执行到4循环,由于不满足if条件,他是踏踏实实的执行了。
第二个由于i=0,满足if 条件,执行了break,已经跳出循环。就不会执行else。
else是你检查一个循环完成后的标志。 for a in range(5,8):
print(a)
for i in range(5):
if i<=4:
print(i)
#break
else:
print('欧尼酱')
txxcat 发表于 2020-4-26 00:24
1.for循环每次被break后都会从头开始
错,break会立刻终止最近的一层for或者while循环,包括or或者whil ...
5
0
6
0
7
0
这是代码2的运行结果。
哥哥除了1和关于代码2的描述,其他都讲的很好。
可能是我表述的有问题。
关于1,我说的从头开始是指,以代码2为例,内层for被break以后,当外层for开始再次循环时,内层for还是从0开始而不会像外层for一样继续循环序列的第二个元素,而是继续打印0,所以会出现506070,要是内层for不重头开始,则会出现506172.
关于代码2没有欧尼酱的原因,我觉得是因为内层for一直被break,迭代卡在了0那里,没办法循环到最后一位才没办法执行else,for 和else 同层,else被执行的唯一条件就是for全部循环完,说是break退出循环导至for无法运行,可是和break最近一层的循环是if循环啊(难道不是吗?),else在if循环外面啊 支离疏哈哈哈 发表于 2020-4-26 12:30
这是代码2的运行结果。
哥哥除了1和关于代码2的描述,其他都讲的很好。
可能是我表述的有问题。
桥都吗dei!!我错了哥哥,所以if不算是循环语句吗??是吗,if 不算循环?? 哦,所有break和continue只能对for和 while起作用是吗,还有别的吗 支离疏哈哈哈 发表于 2020-4-26 12:30
这是代码2的运行结果。
哥哥除了1和关于代码2的描述,其他都讲的很好。
可能是我表述的有问题。
关于1我错了,他不是重头来,而是for循环 被break以后迭代也被break了,所有若是把if换一下,它也可以一直卡在别的数字 woai5551981 发表于 2020-4-26 00:40
else 是在循环语句没有break,完整执行完成后,就执行。第一个显然,i 是从0执行到4循环,由于不满足if条件 ...
说的好,else是检查循环完成后的标志,谢谢哥哥
页:
[1]