循环结构应用场景循环结构可以轻松控制某事或重复它。Python中有两种构造循环结构的方法,一种是for-in循环,另一种是while循环。如果for-in循环清楚的知道循环执行的次数或者遍历一个容器(后面介绍),那么我们推荐使用for-in循环,比如下面代码中计算1~100的总和的结果($\displaystyle\sum\limits_{n=1}^{100}n$)。"""用for循环实现1~100求和"""sum=0forxinrange(101):sum+=xprint(sum)#5050需要说明的是,上面代码中的range类型可以用于生成一个不变的数值序列,这个序列通常用在循环中,例如:range(101)可以生成一个从0到100的整数序列,默认从0开始,边界减1。range(1,100)可以生成从1到99的整数序列,边界为负1。range(1,100,2)可以生成从1到99的奇数序列,其中2是步长。知道了这一点,我们就可以用下面的代码对1到100之间的偶数求和。"""用for循环实现1到100之间的偶数求和"""sum=0forxinrange(2,101,2):sum+=xprint(sum)#2550也可以在循环中使用branches结构实现同样的功能,代码如下。"""用for循环实现1到100之间的偶数求和"""sum=0forxinrange(1,101):ifx%2==0:sum+=xprint(sum)#2550whileloopif构造一个不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过可以生成或转换bool值的表达式来控制循环。表达式的值为True继续循环,表达式的值为False。循环结束。我们来看一个“猜数字”的小游戏(计算机产生一个1到100之间的随机数,人输入自己猜的数字,计算机给出相应的提示信息,直到人猜出由计算机)查看如何使用while循环。"""猜数游戏产生一个1到100之间的随机数供人猜,根据人猜到的数字,给出变大/变小/对的提示。"""importrandommanswer=random.randint(1,100)counter=0whileTrue:counter+=1number=int(input('Pleaseenter:'))ifnumberanswer:print('smaller')else:print('恭喜你,你猜对了!')breakprint('你总共猜了%d次'%counter)ifcounter>7:print('你的智商余额明显不足')#没有猜对了,输入7次以上本文不输出说明:上面代码使用了break关键字提前终止循环。需要注意的是,break只能终止它所在的循环。这在使用嵌套循环结构(如下所述)时是必需的。注意力。除了break,还有一个关键字是continue,可以用来放弃本次循环的后续代码,直接让循环进入下一轮。和分支结构一样,循环结构也可以嵌套,也就是说循环结构也可以在循环中构造。下面的例子演示了如何通过嵌套循环输出一张九九乘法表。"""输出九九乘法表"""foriinrange(1,10):forjinrange(1,i+1):print('%d*%d=%d'%(i,j,i*j),end='\t')print()练习练习一:输入一个数,判断它是否是素数。"""输入正整数判断是否为素数"""frommathimportsqrtnum=int(input('请输入正整数:'))end=int(sqrt(num))is_prime=Trueforxinrange(2,end+1):ifnum%x==0:is_prime=Falsebreakifis_primeandnum!=1:print('%disprime'%num)else:print('%disnotprime}'%num)练习二:输入两个正整数,计算最大公约数和最小公倍数。"""输入两个正整数计算最大公约数和最小公倍数"""x=int(input('x='))y=int(input('y='))ifx>y:x,y=y,xforfactorinrange(x,0,-1):ifx%factor==0andy%factor==0:print('%d和%d的最大公约数是%d'%(x,y,factor))print('%d和%d的最小公倍数是%d'%(x,y,x*y//factor))break练习3:打印三角形图案。"""打印各种三角形图案**********************************************************"""row=int(input('请输入行数:'))foriinrange(row):for_inrange(i+1):print('*',end='')print()foriinrange(row):forjinrange(row):ifj