.1while循环循环语句是编程中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下。while(表达式):...else:...while循环执行过程:当循环表达式为真时,while中的语句依次执行。直到循环表达式的值为False,程序流程转到else语句。else子句可以省略,表达式两边的括号也可以省略。注意:while循环中的else子句也是循环的一部分,else子句会在最后一个循环结束后执行。下面的代码演示了while循环的使用。程序首先要求输入5个数,然后依次输出这5个数。#while循环numbers=input("请输入若干个数字,用逗号隔开:").split(",")print(numbers)x=0whilex,一律使用!=if(x>0):x-=1#如果x大于0,则减1else:x+=1#如果x是小于0,则加上1ii=i+1print("%dcycle:%f"%(i,x))else:print("x等于0:",x)【代码说明】第二行代码输入变量x的值。第三行代码定义了变量i,代表循环次数。第4行代码给出了循环条件x!=0。如果x不等于0,则执行第5行的代码;否则,执行else子句的内容。第五行代码判断变量x的值是否大于0。代码的第6行,如果x的值大于0,则每次循环减1。第七行代码判断变量x的值是否小于0。第8行,如果x的值小于0,则通过循环每次加1。在第九行代码中,每经过一次循环,变量i的值就加1。在第11行,循环结束,else子句输出变量x的值。输出结果(假设输入数字为0):x等于0:0。在使用循环语句时,要注意循环表达式的布尔值,避免死循环。无限循环是条件始终为真的循环。例如:i=1whilei>0:#iisalwaysgreaterthan0ii=i+1print(i)这段代码是一个无限循环,变量i的值总是大于0。2.forloop使用for循环遍历一个集合,依次访问集合中的每一项。for循环的格式如下。forvariableincollection:...else:...for...in...循环执行过程:每次循环从集合中取一个值,并将该值赋值给变量。集合可以是元组、列表、字典等数据结构,else子句可以省略。注意:for循环中的else子句也是循环的一部分,else子句会在最后一个循环结束后执行。for...in...循环通常与range()函数一起使用,range()返回一个列表,for...in...遍历列表中的元素。range()函数的声明如下:classrange(object)range(stop)->rangeobjectrange(start,stop[,step])->rangeobject【代码说明】range()返回一个范围对象,元素列表的值由3个参数决定:参数start表示列表开头的值,默认值为0;参数stop表示列表末尾的值,不可缺少;参数setp表示步长,即每次递增或递减的值,默认为1。下面[例3-7]中的代码遍历range()生成的列表,过滤掉正数数、负数和0。【例3-7.py】#forin语句forxinrange(-1,2):ifx>0:print("正数:",x)elifx==0:print("零:",x)else:print("负数:",x)else:print("循环结束")【代码说明】第二行代码遍历range(-1,2)生成的列表。range(-1,2)返回的3个数分别是-1、0、1。每次循环结束时,变量x的值依次为-1、0、1。第三行代码判断变量x的值是否大于0。代码的第4行输出一个正值。输出是“正数:1”。第五行代码判断变量x的值是否等于0。第六行代码,输出结果为“零:0”。第8行代码输出一个负值。输出是“负数:-1”。第9行并没有结束for循环,执行完else子句后循环结束。输出是“负数:-1”。在C和Java语言中,支持具有以下结构的for语句。for(expression1;expression2;expression3)语句块Python不支持这样的for循环。如果需要编写具有类似功能的循环,可以使用while循环。例如:x=0whilex<5:print(x)xx=x+2whilewhile循环的写法比较琐碎,需要比较判断。因此,在range()函数的帮助下,也可以为此使用for循环。例如:forxinrange(0,5,2):print(x)【代码说明】输出数字在区间[0,5),不包括5。每次循环结束时,x的值增加2.输出结果:024这里只用了两行代码就实现了传统的for循环。如果想使用条件表达式作为循环的条件,可以构造range()函数来实现。3、break和continue语句break语句可以使程序跳出循环语句,从而在循环体之外执行程序,即break语句可以提前结束循环。比如break语句就是用来模拟switch分支结构的。operator="+"x=1y=2forcaseinswitch(operator):#switch只能用于for...in...loopifcase('+'):print(x+y)breakifcase('-'):print(x-y)breakifcase('*'):print(x*y)breakifcase('/'):print(x/y)breakifcase():#defaultbranchprint("")【代码说明】第7行代码break用于.当变量运算符的值为“+”时,执行表达式x+y,然后中断switch分支结构,不再执行后面的case分支。此时输出为3,后面的break效果一样。当匹配到一个case时,程序就会跳出switch。如果第一种情况不使用break子句,程序将输出两个值,3和-1。因为执行输出表达式x+y后分支结构没有中断,所以程序会流向下一个case。然后继续计算表达式x-y的值,遇到后面的break语句就退出分支结构。break语句在循环结构中也有类似的作用。[例3-8]中的代码会查找用户输入的0到99之间的值。[例3-8.py]x=int(input("Inputthevalueofx:"))y=0foryinrange(0,100):ifx==y:print("Findthenumber:",x)breakelse:print("Notfound")【代码说明】第一行代码捕获用户输入的值,将值转换为int类型,赋值给变量x。第二行代码定义了一个变量y,用于暂存需要遍历的链表的值。第3行使用for...in...循环迭代range(0,100)返回的列表。range(0,100)的返回值为0,1,2,...,99。第四行代码判断输入的值是否等于列表中的值。如果条件为真,输出找到的数字并立即退出循环。循环结束后,后面的else子句不会执行。在第7行,当没有找到输入值时,将执行else子句后面的代码。注意:break语句不能运行在循环体或分支语句之外,否则Python解释器会提示如下错误。SyntaxError:'break'outsideloopcontinue语句也是用来跳出循环的,但是和break不同的是,使用continue语句不会跳出整个循环体,而只是跳出当前循环,然后继续执行以下循环。x=0foriin[1,2,3,4,5]:ifx==i:continuex+=iprint("x的值",x)【代码说明】第一行代码将x赋0。第2行使用for...in...语句迭代列表[1,2,3,4,5]。第三行代码比较x和i,如果x等于值i,则执行第4行的continue语句,停止当前循环,即不再执行第五行代码,继续执行下一句环形。代码第6行打印出最终结果,输出为12。