Python循环语句代码详解:while、for、break( 二 )


注意:for循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句 。
for…in…循环通常与range()函数一起使用,range()返回一个列表,for…in…遍历列表中的元素 。range()函数的声明如下:
class range(object)   range(stop) -> range objectrange(start, stop[, step]) -> range object【代码说明】
range()返回一个range对象,列表的元素值由3个参数决定:参数start表示列表开始的值,默认值为0;参数stop表示列表结束的值,该参数不可缺少;参数setp表示步长,即每次递增或递减的值,默认值为1 。
下面【例3-7】中的这段代码遍历range()生成的列表,过滤出正数、负数和0 。
【例3-7.py】
1 # for in语句2 for x in range(-1, 2):3     if x > 0: 4         print ("正数:",x)5     elif x == 0 : 6         print ("零:",x)7     else:8         print ("负数:",x)9 else:10    print ("循环结束")【代码说明】
  • 第2行代码遍历range(-1,2)生成的列表 。range(-1,2)返回的3个数字分别为-1、0、1 。每次循环结束,变量x的值依次为-1、0、1 。
  • 第3行代码判断变量x的值是否大于0 。
  • 第4行代码输出正数的值 。输出结果为“正数:1” 。
  • 第5行代码判断变量x的值是否等于0 。
  • 第6行代码,输出结果为“零:0” 。
  • 第8行代码,输出负数的值 。输出结果为“负数:-1” 。
  • 第9行代码并没有结束for循环,else子句执行后循环才结束 。输出结果为“负数:-1” 。
在C、JAVA语言中,支持如下结构的for语句 。
for(表达式1; 表达式2; 表达式3) 语句块Python不支持这样的for循环 。如果需要编写类似功能的循环,可以使用while循环 。例如:
1 x = 02 while x < 5:3     print(x)4     x = x + 2while循环的写法比较琐碎,需要比较判断 。因此,对此也可以使用for循环,借助range()函数来实现 。例如:
1 for x in range(0, 5, 2):2     print (x)【代码说明】
输出的数字在[0,5)这个区间,不包括5 。每次循环结束,x的值加2 。输出结果:
024这里只用了两行代码就实现了传统for循环 。如果要用条件表达式作为循环的条件,可以构造range()函数来实现 。
03 break和continue语句break语句可以使程序跳出循环语句,从而执行循环体之外的程序,即break语句可以提前结束循环 。例如,模拟switch分支结构使用了break语句 。
1 operator = "+" 2 x = 1 3 y = 2 4 for case in switch(operator):   # switch只能用于for... in...循环中 5     if case('+'): 6         print (x + y) 7         break 8     if case('-'): 9         print (x - y)10         break11     if case('*'):12         print (x * y)13         break14     if case('/'):15         print (x / y)16         break17     if case():                      # 默认分支18         print ("")【代码说明】
第7行代码中使用了break 。当变量operator的值为“+”,则执行表达式x + y,然后中断switch分支结构,后面的case分支都不会执行 。此时输出结果为3 。后面的break作用相同 。当匹配到某个case后,程序将跳出switch 。
如果第一个case不使用break子句,程序将输出两个值,分别是3和-1 。因为执行完输出表达式x + y后,分支结构并没有中断,程序将流转到下面一个case 。然后继续计算表达式x – y的值,遇到后面的break语句才退出分支结构 。break语句在循环结构中也有类似的作用 。【例3-8】中的这段代码将从0到99中查找用户输入的值 。


推荐阅读