資源描述:
《本章主講 李俊萩.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在PPT專區(qū)-天天文庫。
1、本章主講李俊萩第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)計(jì)算機(jī)編程導(dǎo)論4.3for語句for迭代項(xiàng)in序列:循環(huán)體循環(huán)體是否Python提供的另一個(gè)循環(huán)機(jī)制是for語句,它提供了Python中最強(qiáng)大的循環(huán)結(jié)構(gòu)。Python中的for語句與傳統(tǒng)的for語句不太一樣,它接受可迭代對(duì)象(例如序列或迭代器)作為其參數(shù),每次迭代其中的一個(gè)元素。迭代項(xiàng)還在序列中嗎?計(jì)算機(jī)編程導(dǎo)論列表、元組、字符串都是序列。序列類型有著相同的訪問模式:它的每一個(gè)元素可以通過指定一個(gè)偏移量的方式得到;而多個(gè)元素可以通過切片操作的方式得到。序列操作可以通過很多內(nèi)建函
2、數(shù)來實(shí)現(xiàn),比如求序列長度len();求最大值max();最小值min();求和sum();排序sorted()等,以上這些內(nèi)建函數(shù)的實(shí)現(xiàn)都離不開循環(huán)結(jié)構(gòu)。4.3.1for語句用于序列類型計(jì)算機(jī)編程導(dǎo)論【例4-10】創(chuàng)建1個(gè)由分?jǐn)?shù)構(gòu)成的列表,求出所有分?jǐn)?shù)的平均分。方法一:使用Python的內(nèi)建函數(shù)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計(jì)算機(jī)編程導(dǎo)論方法二:使用for語句,通過序列索引進(jìn)行迭代?!痉治觥浚?)以上列表score有8個(gè)元素,這些元素的序列索引范圍是“0~7”。(2)本題用到成員測(cè)試運(yùn)算符“in”,如果成員在序列中,測(cè)試結(jié)果為“True”,否則為“False”。(3)本題用到計(jì)算序列長度的內(nèi)建函數(shù)len()。(4)本題用到內(nèi)建函數(shù)range(),range()函數(shù)的完整語法要求提供2個(gè)或3個(gè)整型參數(shù):range(start,end,step)計(jì)算機(jī)編程導(dǎo)論score=[70,90,78,85,97,94,65,80]s=0
4、print'所有的分?jǐn)?shù)值是:'#以下for語句的i是迭代項(xiàng),內(nèi)建函數(shù)len(score)的執(zhí)行結(jié)果是8#內(nèi)建函數(shù)range(8)返回一個(gè)列表[0,1,2,3,4,56,7]#運(yùn)算符in是判斷迭代項(xiàng)i是否還在列表[0,1,23,4,5,67]中foriinrange(len(score)):s+=score[i]#循環(huán)體——對(duì)列表元素求和printscore[i],aver=s/8.0#循環(huán)之后,求平均值print'aver=',aver程序:計(jì)算機(jī)編程導(dǎo)論方法三:使用for語句,通過序列項(xiàng)進(jìn)行迭代。score=
5、[70,90,78,85,97,94,65,80]print'所有的分?jǐn)?shù)值是:'sum=0#以下for語句使用運(yùn)算符in判斷迭代項(xiàng)i是否在列表score中foriinscore:sum+=i#循環(huán)體——對(duì)列表元素求和printi,aver=sum/8.0#循環(huán)之后,求平均值print'aver=',aver程序:計(jì)算機(jī)編程導(dǎo)論使用內(nèi)建函數(shù)range()可以把Python中的for語句變成與其它語言中的for語句更為相似的計(jì)數(shù)循環(huán)模式。例如,從0計(jì)數(shù)到10,每次遞增1。4.3.2for語句用于計(jì)數(shù)循環(huán)【例4-12
6、】編程求以下表達(dá)式的值,其中n值從鍵盤輸入。參考值:當(dāng)n=10時(shí),s=2.928968。計(jì)算機(jī)編程導(dǎo)論方法一:本題屬于級(jí)數(shù)求和問題,循環(huán)次數(shù)確定,使用while語句編程。n=eval(input('請(qǐng)輸入n的值:'))i=1s=0whilei<=n:s=s+1.0/i#求和i=i+1#i自增1print('s=',s)#打印結(jié)果程序:計(jì)算機(jī)編程導(dǎo)論方法二:使用for語句編程。n=int(raw_input('請(qǐng)輸入n值:'))s=0#以下for語句使用運(yùn)算符in判斷迭代項(xiàng)i是否在列表[1,2,3,…,n]#中,i每
7、次遞增1foriinrange(1,n+1,1):s=s+1.0/i#求和print'1+1/2+...+1/',n,'=',s#打印結(jié)果程序:計(jì)算機(jī)編程導(dǎo)論循環(huán)的嵌套是指在一個(gè)循環(huán)中又包含另外一個(gè)完整的循環(huán),即循環(huán)體中又包含循環(huán)語句。while循環(huán)和for循環(huán)可以相互嵌套。循環(huán)嵌套的執(zhí)行過程是:一次外循環(huán)對(duì)應(yīng)著完整的一輪內(nèi)循環(huán)。請(qǐng)思考以下程序段的執(zhí)行效果:foriinrange(5):forjinrange(2):print('*',end='')利用for語句實(shí)現(xiàn)雙層循環(huán)嵌套計(jì)算機(jī)編程導(dǎo)論【例4-13】使用fo
8、r循環(huán)的嵌套結(jié)構(gòu)打印9-9乘法表【分析】9-9乘法表由9行組成,每行的列數(shù)有規(guī)律地遞增。通過觀察可以看出,表達(dá)式“X*Y=Z”中的X是內(nèi)循環(huán)變量j的取值,Y是外循環(huán)變量i的取值,Z是X乘以Y的結(jié)果。計(jì)算機(jī)編程導(dǎo)論計(jì)算機(jī)編程導(dǎo)論foriinrange(1,10,1):#控制行forjinrange(1,i+1,1):#控制列printi,'*',j,'=',i