上节课我们已经学习了遍历循环、计数循环和条件循环。从循环结构开始,程序的难度明显变高了,需要多进行练习。这节课还有循环的三个知识点——bak和continue语句以及循环的嵌套讲一下。最后再带大家熟悉一下顺序结构、分支结构、循环结构的综合运用。
一、bak语句
bak语句用于循环体中,它的作用是退出当前的循环体。bak语句用在循环体的分支结构中。我们看看bak语句的逻辑结构:
我们看一下具体的例子:
list_books=["西游记","红楼梦","三国演义","水浒传"]foriinlist_books:ifi==三国演义:bakprint(i,end=)
程序运行后打印出西游记红楼梦。三国演义满足if条件判断,循环结束。
二、continue语句
continue语句用于循环体中,它的作用是跳过当前循环,进入下一次循环。continue语句用在循环体中的分支结构中。我们看一下continue语句的逻辑结构:
我们看一下具体的例子:
list_books=["西游记","红楼梦","三国演义","水浒传"]foriinlist_books:ifi==三国演义:continueprint(i,end=)
这段代码与刚刚的很像,唯一不同的是bak变成了continue。程序运行后打印出西游记红楼梦水浒传。三国演义满足if条件判断,continue后面的代码不再执行,因此跳过print语句直接进入下一次循环。
三、循环的嵌套
循环结构的嵌套是指在循环结构的语句块中含有循环结构。嵌套循环中每一个循环都必须遵守缩进和英文冒号等格式要求,同一级别的循环必须在同一个缩进层次里面。
循环嵌套执行的次数=外层循环次数×内层循环次数。
我们看下面的代码:
foriinrange(3):forjinrange(3):print(i,j)
循环嵌套的代码,我们可以看成有行有列的表格,如下所示:
四、循环结构的综合应用
随着我们学习了循环结构后,我们能够使用Python解决很多复杂的问题了,我们这里举几个比较常用的例子。
4.1用户分多次输入,将用户输入的值存入列表中
用户依次输入每个学生的成绩,输入‘q’结束输入。最后再计算全班的平均分。
分析:
在书写代码前我们不知道班级的人数,无法确定循环的次数,只有使用无限循环,用户输入‘q’时使用bak语句结束循环。
参考代码如下:
scos=[]whileTrue:s=input("请输入分数,输入q结束输入:")ifs==q:baks=float(s)scos.append(s)avg=sum(scos)/len(scos)print(平均分:,avg)
4.2对列表中的值进行分类
一个列表中有很多数,我们要把奇数放到一起、把偶数放到一起。
分析:
我们对列表进行遍历,遍历到过程中判断这个数是奇数还是偶数,奇数放入一个列表中,偶数放入另一个列表中就可以了。
参考代码如下:
number=[34,23,35,46,21,44,82,27,16,22,97]odd=[]even=[]foriinnumber:ifi%2==0:even.append(i)else:odd.append(i)print(奇数:,odd)print(偶数:,even)
4.3数列的和或积的计算
前面我们讲计数循环时,已经提到了从1到所有整数的和的计算了。遇到这种类型的问题,我们只需要先定义一个变量做累积计数用。累加时初始值为0,累乘时初始值为1。(0加任何数等于它本身、1乘任何数等于它本身。)我们看下面一个例子:
“!”是一种数学运算符,名字叫“阶乘”。一个正整数的阶乘的定义小于等于这个正整数的所有正整数的乘积。
1!=1
2!=2×1
3!=3×2×1
……
输入一个正整数,计算它的阶乘。
参考代码如下:
n=int(input("请输入一个正整数:"))f=1foriinrange(1,n+1):f*=iprint(n,"!=",f)
4.4对可能的情况进行穷举
我们经常碰到一种情况,在一定范围内寻找满足一定条件的值。有用的留下来,没有用的舍弃。我们可以利用循环,对所有的可能性进行穷举,并在循环体中通过分支结构判断,将有用的留下来,没用的舍弃。我们看下面的例子:
找出能够能够被3整除,不能被7整除的三位数有多少个。
分析:三位数的范围是到,我们可以使用计数循环查找所有的三位数,并判断这个数是否满足条件。
参考代码如下:
n=0#统计个数用的变量foriinrange(,0):ifi%3==0andi%7!=0:n+=1print(n)
循环的用途还有很多,我们遇到问题时,可以按照上面的思路自己开动脑筋。
到这节课为止,Python的基本数据类型和程序的结构都已经讲完了。从下节课开始,我们会接触一个非常有意思的知识:使用Python画画。
五、课后思考题
1、编程题
下面是几位同学的语文、数学、英语的期末成绩,请你写一段代码,分别求出这些同学各个学科的平均分,最高分,最低分,并且计算出来每位同学的总成绩。
[(98,97,96),(79,98,97),(90,96,97),(99,90,92),(93,98,91),(98,99,97),(89,95,87),(97,67,89)]
2、编程题
一个正整数只能被1和它本身整除,这个数被称为质数。打印出2到之间所有的质数。
3、编程题