九章、流程控制——循环语句
Although never is often better than *right* now. ——The Zen of Python
循环主要有两种类型:
1.重复一定次数的循环,称为计次循环,如 for 循环。
2.一直重复、直到条件不满足时才结束的循环条件,称为条件循环,只要条件为真,这种循环会一直循环下去,如while循环.
一、for循环
for循环是一个计次循环,通常适用于枚举或遍历序列,以及迭代对象中的元素。一般应用在循环次数已知的情况下,语法格式如下:
for 迭代变量 in 对象: 循环体
其中迭代变量用于保存读取出的值,对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组;循环体为一组被重复执行的语句。执行流程如图所示:
1.进行数组循环
在使用for循环时,最基本的应用就是进行数值循环。循环可以帮助我们解决很多重复输入或计算问题.
1 for i in [1,2,3,4,5,6]: 2 print("飞雪连天射白鹿,笑书神侠倚碧鸳") 3 输出: 4 飞雪连天射白鹿,笑书神侠倚碧鸳 5 飞雪连天射白鹿,笑书神侠倚碧鸳 6 飞雪连天射白鹿,笑书神侠倚碧鸳 7 飞雪连天射白鹿,笑书神侠倚碧鸳 8 飞雪连天射白鹿,笑书神侠倚碧鸳 9 飞雪连天射白鹿,笑书神侠倚碧鸳
利用数值循环可以输出列表的值,当循环次数过多,比如实现从1到100的累加求和,这时候可以使用range()函数。示例如下:
1 print("计算1到100的累加求和:") 2 result = 0 3 for i in range(101): 4 result += i 5 print(result) 6 输出: 7 计算1到100的累加求和: 8 5050
range()函数是Python中的内置函数,用于生成一系列连续的整数。多用于for循环中,其语法格式如下:
range(start,end,step)
start:用于指定计数的起始值,可以省略,如果省略则从0开始。
end:用于指定计数的结束值(但不包括该值)不能省略。当range()函数中只有一个参数时,即表示指定计数的结束值。
step:用于指定步长,默认步长为1
在使用range()函数时,如果只有一个参数,那么表示指定的是end;如果是两个参数,则表示指定是start和end;只有三个参数都存在时,最后一个才表示步长.示例如下:
1 for i in range(1,10,2): 2 print(i,end=' ') 3 输出: 4 1 3 5 7 9
2.遍历字符串
使用for循环语句除了可以循环数值,还可以逐个遍历字符串,示例如下:
1 str1 = "我是雨霓" 2 print(str1) 3 for i in str1: 4 print(i) 5 输出: 6 我是雨霓 7 我 8 是 9 雨 10 霓
二、while循环
while循环时通过一个条件来控制是否继续反复执行循环体中的语句。语法格式如下:
while 条件表达式: 循环体
循环体是指一组被重复执行的语句。当条件表达式的返回值为True时,则执行循环体中的语句;执行完毕后,重新判断条件表达式的返回值,直到表达式返回结果为False时,退出循环。
1 i=1 2 while i <=4: 3 print("飞雪连天射白鹿") 4 i=i+1 5 输出: 6 飞雪连天射白鹿 7 飞雪连天射白鹿 8 飞雪连天射白鹿 9 飞雪连天射白鹿
使用while循环语句实现从1开始依次尝试符合条件的数,直到找到符合条件的数时,才能退出循环。具体实现方法是:首先定义一个用于计数的变量number和一个作为循环条件的变量none(默认值是真),然后编写while循环语句,在循环体中,将变量number的值加1,并且判断number的值是否符合条件,当符合条件时,将变量none设置为假,从而推出循环,示例代码如下:
1 print("今有物不知数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n") 2 none=True 3 num=0 4 while none: 5 num+=1 6 if num%3==2 and num%5==3 and num%7==2: 7 print("这个数是:",num) 8 none = False 9 输出: 10 今有物不知数,三三数之剩二,五五数之剩三,七七数之剩二,问几何? 11 12 这个数是: 23
在使用while循环语句时,一定不要忘记添加循环条件改变为False的代码,否则将会产生死循环。
三、循环嵌套
在Python中,允许一个循环体中嵌入另一个循环,这称为循环嵌套。在Python中,for循环和while循环都可以进行循环嵌套。
1.在while循环中套用while循环:
while 条件表达式1: while 条件表达式2: 循环体2 循环体1
2.在for循环中套用for循环:
for 迭代变量1 in 对象1: for 迭代变量2 in 对象2: 循环体2 循环体1
3.在while循环中套用for循环
while 条件表达式1: for 迭代变量 in 对象: 循环体2 循环体1
4.在for循环中套用while循环
for 迭代变量 in 对象: while 条件表达式: 循环体2 循环体1
除了以上的四种嵌套格式还可以实现更多的嵌套。
四、跳转语句
当循环条件一直满足时,程序会被一直执行下去,为了结束这种状况,有以下两种方法:
1.使用break语句完全终止循环
2.使用continue语句直接跳到下一次循环
1.break语句
break语句可以终止当前循环,包括while和for在内的所有控制语句,break语句一般会结合if语句进行搭配使用,表示再某种条件下,跳出循环。如果使用嵌套循环,break语句将跳出最内层循环。
1.1在while语句中使用break语句:
while 条件表达式1: 执行代码 if 条件表达式2: break
1.2在for语句中使用break语句:
for 迭代变量 in 对象: if 条件表达式: break
2.continue语句
continue语句的作用域没有break语句强大,他只能终止本次循环而提前进入下一次循环中。continue语句一般会结合if语句进行搭配使用,表示在某种条件下,跳过当前循环的剩余语句,然后继续进行下一轮循环。如果使用循环嵌套,continue语句将只跳过最内层循环中的剩余语句。
2.1在while语句中使用continue语句:
while条件表达式1: 执行代码 if 条件表达式2: continue
2.2在for语句中使用continue语句
for 迭代变量 in 对象: if 条件表达式: continue