Python:for循环+else与continue+break小总结

以往的笔记,记录一下

前言

一、for循环简介:
for i in xx,表示i依次一个个将xx里面的值取出来
二、for…else…
1、简介:
for也可以和else使用
什么时候用这个else?
当for j in xx时xx中没有数据或依次取完了,就会使用else
这一种格式,是Python所独有的

for i in range(0,2):
    print 1
else:
    print 0    

2、这里也顺便介绍一下continue和break
前提:下面所说的当前循环:continue或break所在的循环称为当前循环
(1)continue
重点:continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环
但如果是在else中执行的,就表示当前循环for中已经没有可用的数了,例如下面的例子中,continue继续进行父循环的下一轮循环,而非当前循环(也就是子循环),why?因为for循环只要执行了else代码,就表示当前循环已经执行完毕了,只能找当前循环的上个循环,这里只有父循环,所以就它喽。设个断点,单步执行一下就会明白了

for j in range(0,2):	#注:这个是"父循环",通俗点说就是父亲
        for i in range(0,3):	#注:这个是"子循环",通俗点说就是儿子,父循环中可以有多个儿子~~
                print(1)
        else:
                continue

像下面的这个,continue就是先当前循环的上个循环,最后才父循环

for j in range(0,2):
        for k in range(0, 3):
                for i in range(0,3):
                        print(1)
                else:
                        continue

下面这个例子是帮助理解的,也单步执行一下

for j in range(0,2):
        for i in range(0,3):
                print(1)
                continue	#这里它不会执行父循环,因为子循环还没有结束,他还是会继续执行

(2)break
重点:break语句用来终止循环语句,但如果有嵌套循环,break表示跳出(终止)当前循环(遇到了break,就不继续执行当前循环的任何代码),但继续执行当前循环外下面同级的循环;如果没有同级的循环就执行当前循环的上个循环;若都没有,就结束循环
例:

for i in range (0,2):
    print(i)
    #break	#注:如果break在这里,那么直接返回0,因为跳出了整个循环
    for j in range (3,6):
        print(j)
        break	#注:如果break在这里,相当于跳出这个子循环,也就是嵌套循环,并没有退出整个循环,所以最后返回0 3 1 3

下面对比一下下面的两种代码,你会更好地理解,下面的都使用单步对比

第一种:如果没有同级的循环就执行当前循环的上个循环

#for j in range (3,6):是for k in (8, 10):的子循环
#break会先跳到for k in (8, 10):

for i in range (0,2):
    print(i)
    for k in (8, 10):
        print(k)
        for j in range (3,6):
            print(j)
            break

第二种:执行当前循环外下面同级的循环

#for j in range (3,6):与for k in (8,10):同级别
#break会先跳到for k in (8,10):

for i in range (0,2):
    print(i)
    for j in range (3,6):
        print(j)
        break
    for k in (8,10):
        print(k)

第三种:因为for k in (8,10):是当前循环的子循环,所以不会执行。都终止当前循环了,怎么执行当前循环下面的代码?

#for k in (8,10):是for j in range (3,6):的子循环

for i in range (0,2):
    print(i)
    for j in range (3,6):
        print(j)
        break
        for k in (8,10):
            print(k)

记住,只要代码和for排头并齐,说明这段代码不属于当前与其并齐的for循环内!!!

猜你喜欢

转载自blog.csdn.net/qq_41617034/article/details/105422008
今日推荐