资源描述:
《本章主讲 李俊萩.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、本章主讲李俊萩第4章循环结构程序设计计算机编程导论4.3for语句for迭代项in序列:循环体循环体是否Python提供的另一个循环机制是for语句,它提供了Python中最强大的循环结构。Python中的for语句与传统的for语句不太一样,它接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中的一个元素。迭代项还在序列中吗?计算机编程导论列表、元组、字符串都是序列。序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到;而多个元素可以通过切片操作的方式得到。序列操作可以通过很多内建函
2、数来实现,比如求序列长度len();求最大值max();最小值min();求和sum();排序sorted()等,以上这些内建函数的实现都离不开循环结构。4.3.1for语句用于序列类型计算机编程导论【例4-10】创建1个由分数构成的列表,求出所有分数的平均分。方法一:使用Python的内建函数sum()求和,然后再求平均分。>>>score=[70,90,78,85,97,94,65,80]>>>score[70,90,78,85,97,94,65,80]>>>aver=sum(score)/8.0>>>aver
3、82.375计算机编程导论方法二:使用for语句,通过序列索引进行迭代。【分析】(1)以上列表score有8个元素,这些元素的序列索引范围是“0~7”。(2)本题用到成员测试运算符“in”,如果成员在序列中,测试结果为“True”,否则为“False”。(3)本题用到计算序列长度的内建函数len()。(4)本题用到内建函数range(),range()函数的完整语法要求提供2个或3个整型参数:range(start,end,step)计算机编程导论score=[70,90,78,85,97,94,65,80]s=0
4、print'所有的分数值是:'#以下for语句的i是迭代项,内建函数len(score)的执行结果是8#内建函数range(8)返回一个列表[0,1,2,3,4,56,7]#运算符in是判断迭代项i是否还在列表[0,1,23,4,5,67]中foriinrange(len(score)):s+=score[i]#循环体——对列表元素求和printscore[i],aver=s/8.0#循环之后,求平均值print'aver=',aver程序:计算机编程导论方法三:使用for语句,通过序列项进行迭代。score=
5、[70,90,78,85,97,94,65,80]print'所有的分数值是:'sum=0#以下for语句使用运算符in判断迭代项i是否在列表score中foriinscore:sum+=i#循环体——对列表元素求和printi,aver=sum/8.0#循环之后,求平均值print'aver=',aver程序:计算机编程导论使用内建函数range()可以把Python中的for语句变成与其它语言中的for语句更为相似的计数循环模式。例如,从0计数到10,每次递增1。4.3.2for语句用于计数循环【例4-12
6、】编程求以下表达式的值,其中n值从键盘输入。参考值:当n=10时,s=2.928968。计算机编程导论方法一:本题属于级数求和问题,循环次数确定,使用while语句编程。n=eval(input('请输入n的值:'))i=1s=0whilei<=n:s=s+1.0/i#求和i=i+1#i自增1print('s=',s)#打印结果程序:计算机编程导论方法二:使用for语句编程。n=int(raw_input('请输入n值:'))s=0#以下for语句使用运算符in判断迭代项i是否在列表[1,2,3,…,n]#中,i每
7、次递增1foriinrange(1,n+1,1):s=s+1.0/i#求和print'1+1/2+...+1/',n,'=',s#打印结果程序:计算机编程导论循环的嵌套是指在一个循环中又包含另外一个完整的循环,即循环体中又包含循环语句。while循环和for循环可以相互嵌套。循环嵌套的执行过程是:一次外循环对应着完整的一轮内循环。请思考以下程序段的执行效果:foriinrange(5):forjinrange(2):print('*',end='')利用for语句实现双层循环嵌套计算机编程导论【例4-13】使用fo
8、r循环的嵌套结构打印9-9乘法表【分析】9-9乘法表由9行组成,每行的列数有规律地递增。通过观察可以看出,表达式“X*Y=Z”中的X是内循环变量j的取值,Y是外循环变量i的取值,Z是X乘以Y的结果。计算机编程导论计算机编程导论foriinrange(1,10,1):#控制行forjinrange(1,i+1,1):#控制列printi,'*',j,'=',i