版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章條件(tiáojiàn)、循環(huán)和其它Python共六十六頁Contents目錄(mùlù)print,import賦值魔法(mófǎ)語句塊條件和條件語句循環(huán)列表推導(dǎo)式三人行小結(jié)共六十六頁print和import01共六十六頁print的逗號輸出(shūchū)import導(dǎo)入模塊導(dǎo)入函數(shù)導(dǎo)入腳本運行腳本與命令行交互共六十六頁賦值魔法(mófǎ)02共六十六頁序列(xùliè)解包x,y,z=1,2,3values=1,2,3函數(shù)返回值,允許返回多個值,要求賦值符號兩邊的變量數(shù)量(shùliàng)一致stu={'name':'Robin','girlfriend':'Marion'}key,共六十六頁賦值鏈式賦值>>>tst=yst=[1,2,3]增量(zēnɡliànɡ)賦值>>>y+=10共六十六頁語句(yǔjù)塊03共六十六頁語句(yǔjù)塊縮排默認(mòrèn)是4個空格示例:共六十六頁條件(tiáojiàn)和條件(tiáojiàn)語句04共六十六頁布爾變量(biànliàng)false:False,0,空值(Null、空字符串,所有為空類型)測試(cèshì)布爾值
函數(shù)bool()共六十六頁條件執(zhí)行(zhíxíng)和if語句name=raw_input('Whatisyourname?')ifname.endswith('Ray')print'Hello,Mr.Ray'共六十六頁else任意輸入三個英文單詞,按字典順序(shùnxù)輸出。elseif P71頁共六十六頁嵌套代碼(dàimǎ)塊復(fù)合(fùhé)語句嵌套語句共六十六頁條件(tiáojiàn)運算關(guān)系運算符is:同一性運算符字符串和序列(xùliè)比較布爾運算符(and,or,not)注意:連接比較a<=y<=100用連接比較運算修改“單詞排序”的例題。共六十六頁作業(yè)(zuòyè):1.輸入成績(score),根據(jù)(gēnjù)分段規(guī)則輸出等級 A:score>=90分;B:90>score>=80;C:80>score>=70;D:70>score>=60;E:score<60。2.用ifelse語句實現(xiàn)A,B,C三個數(shù)從大到小排序并輸出。3.模擬菜單選擇,根據(jù)用戶輸入數(shù)字,在屏幕打印顯示不同的內(nèi)容: 1:顯示“NewFile” 2:顯示“Edit” 3:顯示“Run” 4:顯示“Help” 其它數(shù)字:顯示“Other”4.分別用列表、元組、字典實現(xiàn)對某個學(xué)生三門課程的成績從大到小排列:數(shù)學(xué)分析,Python,數(shù)學(xué)建模,輸出格式為:數(shù)學(xué)分析:98.50Python:97.00數(shù)學(xué)建模:86.50共六十六頁score=raw_input('enteranumber:')ifscore>=90:print'A'elif90>score>=80:print'B'elif80>score>=70:print'C'elif70>score>=60:print'D'else:print'E'共六十六頁共六十六頁循環(huán)(xúnhuán)05共六十六頁程序設(shè)計的3種基本(jīběn)結(jié)構(gòu)順序結(jié)構(gòu)——是指程序流程按先后順序執(zhí)行,只有執(zhí)行了前一步,才能執(zhí)行后一步。例如火車在軌道上行駛,只有過了上一站點才能到達下一站點。選擇結(jié)構(gòu)——又稱分支結(jié)構(gòu),是指程序流程可以分幾條路徑執(zhí)行。例如在一個(yīɡè)十字路口處,可以選擇向東、南、西、北幾個方向行走。
循環(huán)結(jié)構(gòu)——又稱重復(fù)結(jié)構(gòu),是指程序流程重復(fù)執(zhí)行某一段代碼。例如萬米跑,圍著足球場跑道不停地跑,直到滿足條件時(25圈)才停下來。 共六十六頁語句(yǔjù)A語句(yǔjù)B順序結(jié)構(gòu)流程圖條件判斷語句A真語句B假選擇結(jié)構(gòu)流程圖條件判斷循環(huán)體真假循環(huán)結(jié)構(gòu)流程圖3種基本結(jié)構(gòu)的流程圖共六十六頁【問題】用戶輸入若干個分數(shù),求所有分數(shù)的平均分。每輸入一個分數(shù)后詢問是否繼續(xù)輸入下一個分數(shù),回答(huídá)“yes”就繼續(xù)輸入下一個分數(shù),回答“no”就停止輸入分數(shù)。分析:該問題需要輸入若干分數(shù)并求和,這是一個重復(fù)的過程,應(yīng)使用循環(huán)結(jié)構(gòu)解決。循環(huán)次數(shù)事先不確定,需根據(jù)應(yīng)答“yes”、“no”來決定循環(huán)是否繼續(xù)。共六十六頁
#ques4_1.pyendFlag="yes"sum=0.0count=0whileendFlag[0]=='y':
x=input("請輸入一個分數(shù)(fēnshù):")
sum=sum+x
count=count+1
endFlag=raw_input("繼續(xù)輸入嗎(yesorno)?")print"\n平均分是:",sum/count共六十六頁循環(huán)(xúnhuán)結(jié)構(gòu)設(shè)計問題【問題】用戶輸入一個(yīɡè)列表,求出列表中所有正偶數(shù)之和。分析:由于不知道用戶輸入的具體數(shù)據(jù)及個數(shù),因此需要在循環(huán)結(jié)構(gòu)中進行判斷和累加。共六十六頁#ques4_1.pyli=input('請輸入一個列表:')sum=0forxinli:ifx>0andx%2==0:sum+=xprint'sum=',sum程序輸入及運行(yùnxíng)結(jié)果:請輸入一個列表:[2,3,4,-5,6,12]sum=24共六十六頁循環(huán)結(jié)構(gòu)(jiégòu)概述循環(huán)結(jié)構(gòu)是一種(yīzhǒnɡ)重復(fù)執(zhí)行的程序結(jié)構(gòu)。實際應(yīng)用中,常會碰到一些需要重復(fù)執(zhí)行的步驟,如級數(shù)求和、統(tǒng)計報表等等。例如:(1)計算1+2+3+…+100,這是一個級數(shù)求和問題,需要重復(fù)執(zhí)行100次,對100個數(shù)依次進行累加。(2)假設(shè)1個班級中有n名同學(xué),統(tǒng)計男同學(xué)和女同學(xué)各有多少名。該問題的求解需要重復(fù)執(zhí)行n次,對每1個同學(xué)依次進行判斷,同時統(tǒng)計男同學(xué)和女同學(xué)的人數(shù)。(3)給定2個整數(shù),求它們的最大公約數(shù)和最小公倍數(shù)。例如:給定6和9,求最大公約數(shù)時,循環(huán)過程從6依次遞減至1,當循環(huán)到3時,判斷得6和9都能被3整除,于是終止循環(huán),求得最大公約數(shù)是3.;求最小公倍數(shù)時,循環(huán)過程從9依次遞增至54,當循環(huán)到18時,判斷得18同時能被6和9整除,于是終止循環(huán),求得最小公倍數(shù)是18。Python提供了兩種基本的循環(huán)結(jié)構(gòu)語句——while語句、for語句。共六十六頁while語句(yǔjù)while表達式: 循環(huán)體表達式循環(huán)體真(非零)假(零)while表達式: 循環(huán)體else: else子句(zǐjù)共六十六頁(1)while語句是一個條件循環(huán)語句,即首先計算表達式,根據(jù)表達式值的真、假來決定是否繼續(xù)循環(huán)。(2)while語句的語法與if語句類似,要使用縮進來分隔子句。(3)while語句的條件表達式不需要(xūyào)用括號括起來,但是表達式后面必須有冒號。(4)使用while語句編程通常會遇到兩種題型,一種是循環(huán)次數(shù)事先確定的問題;一種是循環(huán)次數(shù)事先不確定的問題。說明(shuōmíng):共六十六頁while語句(yǔjù)用于有限循環(huán)【分析】該問題使用循環(huán)結(jié)構(gòu)解決,由于不確定用戶(yònghù)即將輸入幾個正整數(shù),因此屬于不確定循環(huán)次數(shù)的問題?!纠烤幊虖逆I盤輸入若干正整數(shù),求所有輸入整數(shù)之和。當輸入整數(shù)為負數(shù)時,結(jié)束該操作。共六十六頁#Exp4_1.pyprint'請輸入若干正整數(shù)進行求和操作(cāozuò),當輸入負數(shù)時結(jié)束:'s=0x=input("請輸入一個整數(shù):")whilex>=0:s=s+xx=input("請輸入一個整數(shù):")print'整數(shù)之和=',s程序(chéngxù):共六十六頁【例】編程從鍵盤輸入若干個字符,一邊輸入一邊輸出(shūchū),當輸入“#”字符時終止該操作?!痉治觥浚?)本題使用(shǐyòng)循環(huán)結(jié)構(gòu)解決,每次循環(huán)從鍵盤輸入一個字符,直到輸入為“#”字符時停止循環(huán)。(2)由于輸入的字符個數(shù)無法確定,因此循環(huán)次數(shù)不確定。
是否共六十六頁a=raw_input('請輸入字符,如果輸入#號則結(jié)束輸入操作:')whilea!='#': #判斷輸入的是否是井號 print'您輸入的字符是:',a #打印輸入的字符 #以下語句是再次(zàicì)輸入一個新的字符 a=raw_input('請輸入字符,如果輸入#號則結(jié)束輸入操作:')else: print'輸入結(jié)束'提問(tíwèn):(1)循環(huán)結(jié)束后,變量a中的值是什么?(2)如果循環(huán)體中沒有下面這條語句會怎么樣?a=raw_input('請輸入字符,如果輸入#號則結(jié)束輸入操作:')共六十六頁while語句解決(jiějué)確定循環(huán)次數(shù)的問題【例】編程計算(jìsuàn)1+2+3+…+100的值。分析:本題使用循環(huán)結(jié)構(gòu)解決,每循環(huán)一次累加一個整數(shù)值,整數(shù)的取值范圍為1~100。由于整數(shù)的范圍是確定的,因此循環(huán)次數(shù)也是確定的。共六十六頁程序(chéngxù):#Exp4_3.pyi,s=1,0whilei<=100: s=s+i i+=1print'1+2+3+...+100=',s框圖(kuàngtú):共六十六頁分析:本題使用循環(huán)結(jié)構(gòu)解決,每循環(huán)一次輸出一個列表元素值,由于列表定義(dìngyì)后,其長度是已知的,因此循環(huán)次數(shù)也是確定的。【例】編程依次輸出列表(lièbiǎo)中個元素的值。共六十六頁while語句解決(jiějué)確定循環(huán)次數(shù)的問題#Exp4_4.pya_list=['a','b','mpilgrim','z','example']a_len=len(a_list)i=0whilei<a_len:print'列表(lièbiǎo)的第',i+1,'個元素是:',a_list[i]i+=1共六十六頁上機作業(yè)(zuòyè):1.計算,參考值:S=1.7182822.編程求斐波拉契數(shù)列的前20項,已知該數(shù)列的第一、二項分別是0、1,從第三項開始,每一項都是前兩項之和。例如:0,1,1,2,3,5,8,13……3.求1~100之間所有的素數(shù)(sùshù),并統(tǒng)計素數(shù)(sùshù)的個數(shù)。共六十六頁共六十六頁【例】求以下(yǐxià)表達式的值,其中n值從鍵盤輸入。參考值:當n=11時,s=1.833333。共六十六頁【分析】(1)以上問題屬于數(shù)學(xué)中的級數(shù)求和問題,是使用循環(huán)結(jié)構(gòu)解決的一類常見問題。(2)級數(shù)求和問題編程的重點在于通過觀察表達式的規(guī)律(guīlǜ),分析每次循環(huán)都要完成的事件。通常將這些事件進行局部分解,稱為“通式”。該題的通式有以下幾個:(1)分母(fēnmǔ)的通式:(2)變量i的通式:(3)當前項的通式:(4)求和的通式:mu=mu+ii=i+1item=1.0/musu=su+item共六十六頁i=1mu=0s=0.0n=input('請輸入n值:')#或用書上的代碼whilei<=n:#判斷是否計算到表達式的最后一項 mu=mu+i#求分母的通式 i+=1 #i自增的通式
item=1.0/mu #求當前項的通式 su=su+item
#求和(qiúhé)的通式
print'sum=',su
#循環(huán)結(jié)束后,打印總和程序(chéngxù):提問:(1)變量i、mu、su
的初值只能是1、0、0.0嗎?(2)循環(huán)體內(nèi)語句的先后順序可以隨意調(diào)換嗎?共六十六頁【例】輸出“水仙花數(shù)”。所謂水仙花數(shù)是指1個3位的十進制數(shù),其各位數(shù)字的立方(lìfāng)和等于該數(shù)本身。例如:153是水仙花數(shù),因為153=13+53+33?!痉治觥浚?)本題需要對100~999范圍內(nèi)的所有數(shù)一一進行判斷。(2)本題的變量i既是循環(huán)變量,同時也是被判斷的數(shù)。(3)每次循環(huán)過程中需要用if語句進行條件判斷。因此本題也是循環(huán)嵌套選擇(xuǎnzé)的結(jié)構(gòu)。共六十六頁提問(tíwèn):變量i是一個(yīɡè)三位整數(shù),例如i=123(1)請寫出分離i的百位數(shù)的表達式。(2)請寫出分離i的十位數(shù)的表達式。(3)請寫出分離i的個位數(shù)的表達式。i=100print('所有的水仙花數(shù)是:')whilei<=999:#判斷循環(huán)是否結(jié)束 bai=int(i/100) #分離i的百位數(shù) shi=int((i%100)/10) #分離i的十位數(shù) ge=int(i%10) #分離i的個位數(shù) ifbai**3+shi**3+ge**3==i:#判斷條件 printi #打印水仙花數(shù) i+=1#變量i自增程序:共六十六頁 for語句(yǔjù)for取值in序列(xùliè): 循環(huán)體循環(huán)體是否Python提供的另一個循環(huán)機制是for語句,它提供了Python中最強大的循環(huán)結(jié)構(gòu)。Python中的for語句與傳統(tǒng)的for語句不太一樣,它接受可迭代對象(例如序列或迭代器)作為其參數(shù),每次迭代其中的一個元素。還有值未取嗎?共六十六頁列表、元組、字符串都是序列。序列類型有著相同的訪問模式:它的每一個元素(yuánsù)可以通過指定一個偏移量的方式得到;而多個元素(yuánsù)可以通過切片操作的方式得到。序列操作可以通過很多內(nèi)建函數(shù)來實現(xiàn),比如求序列長度len();求最大值max();最小值min();求和sum();排序sorted()等,以上這些內(nèi)建函數(shù)的實現(xiàn)都離不開循環(huán)結(jié)構(gòu)。for語句用于序列(xùliè)類型共六十六頁【例】創(chuàng)建(chuàngjiàn)1個由分數(shù)構(gòu)成的列表,求出所有分數(shù)的平均分。方法一:使用(shǐyòng)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>>>aver82.375共六十六頁方法二:使用for語句,通過序列索引(suǒyǐn)進行迭代。【分析】(1)以上列表score有8個元素,這些元素的序列索引范圍是“0~7”。(2)本題用到成員測試運算符“in”,如果成員在序列中,測試結(jié)果為“True”,否則(fǒuzé)為“False”。(3)本題用到計算序列長度的內(nèi)建函數(shù)len()。(4)本題用到內(nèi)建函數(shù)range(),range()函數(shù)的完整語法要求提供2個或3個整型參數(shù):range(start,end,step)共六十六頁score=[70,90,78,85,97,94,65,80]print'所有的分數(shù)值是:'printscore#打印列表sum=0#以下for語句的i是迭代(diédài)項,內(nèi)建函數(shù)len(score)的執(zhí)行結(jié)果是8#內(nèi)建函數(shù)range(8)返回一個列表[0,1,2,3,4,56,7]#運算符in是判斷迭代項i是否還在列表[0,1,23,4,5,67]中foriinrange(len(score)): sum+=score[i]#循環(huán)體——對列表元素求和aver=sum/8.0#循環(huán)之后,求平均值print'\naver=',aver程序(chéngxù):共六十六頁方法三:使用for語句(yǔjù),通過序列項運算。score=[70,90,78,85,97,94,65,80]print'所有的分數(shù)值是:'printscore#打印列表sum=0#以下(yǐxià)for語句使用運算符in判斷迭代項i是否在列表score中foriinscore: sum+=i#循環(huán)體——對列表元素求和aver=sum/8.0#循環(huán)之后,求平均值print'\naver=',aver程序:共六十六頁循環(huán)(xúnhuán)的嵌套是指在一個循環(huán)(xúnhuán)中又包含另外一個完整的循環(huán)(xúnhuán),即循環(huán)(xúnhuán)體中又包含循環(huán)(xúnhuán)語句。while循環(huán)(xúnhuán)和for循環(huán)(xúnhuán)可以相互嵌套。循環(huán)嵌套的執(zhí)行過程是:一次外循環(huán)對應(yīng)著完整的一輪內(nèi)循環(huán)。利用(lìyòng)for語句實現(xiàn)雙層循環(huán)嵌套共六十六頁【例】使用for循環(huán)(xúnhuán)的嵌套結(jié)構(gòu)打印9-9乘法表【分析(fēnxī)】9-9乘法表由9行組成,每行的列數(shù)有規(guī)律地遞增。通過觀察可以看出,表達式“X*Y=Z”中的X是內(nèi)循環(huán)變量j的取值,Y是外循環(huán)變量i的取值,Z是X乘以Y的結(jié)果。共六十六頁foriinrange(1,10,1):#控制(kòngzhì)行 forjinrange(1,i+1,1):#控制列 printi,'*',j,'=',i*j,'\t’ print'\n'#每行末尾的換行程序(chéngxù):共六十六頁【課堂練習(xí)】使用for循環(huán)的嵌套結(jié)構(gòu)(jiégòu)編程,打印以下圖形。(1)矩形(2)直角三角形(3)正三角形共六十六頁Python提供了一條提前結(jié)束循環(huán)的語句——break語句。當在循環(huán)過程中,某個條件被觸發(fā)(一般(yībān)通過if語句檢查),需要立即停止循環(huán)時使用。break語句可以用在while和for循環(huán)中。break語句(yǔjù)
共六十六頁【例】求200以內(nèi)(yǐnèi)能被17整除的最大正整數(shù)?!痉治觥窟@個查找過程將以遞減的方式遍歷200至1之間的整數(shù),當找到第1個能被17整除的數(shù)時,循環(huán)過程立即停止,后續(xù)還沒有遍歷的數(shù)將無需再進行判斷,因此可以使用(shǐyòng)break語句將循環(huán)提前終止。foriinrange(200,1,-1): ifi%17==0: breakprint('200以內(nèi)能被17整除的最大數(shù)是:',i)程序:共六十六頁continute語句(yǔjù)
continue語句的作用(zuòyòng)是終止當前循環(huán),并忽略continue之后的語句,然后回到循環(huán)的頂端,繼續(xù)執(zhí)行下一次循環(huán)。共六十六頁【例】求200以內(nèi)能被17整除(zhěngchú)的所有正整數(shù),并統(tǒng)計滿足條件的數(shù)的個數(shù)。
#Exp4_17_2.pys=0print'200以內(nèi)能被17整除(zhěngchú)的所有數(shù)是:'foriinrange(1,201,1): ifi%17!=0: continue printi, s+=1
print'\n數(shù)的個數(shù)是:',s共六十六頁作業(yè)(zuòyè)把上次作業(yè)(zuòyè)改成for循環(huán)實現(xiàn)共六十六頁循環(huán)(xúnhuán)中的els
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 巖棉防火隔離帶施工工藝
- 2024年渭南職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 洗地機行業(yè)供需現(xiàn)狀與發(fā)展戰(zhàn)略規(guī)劃
- 2024年淄博師范高等??茖W(xué)校高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2017-民族區(qū)域自治制度:適合國情基本政治制度
- 2024年浙江長征職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年浙江經(jīng)濟職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 商易通業(yè)務(wù)基本介紹講義資料
- 2024年浙江機電職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 4¥-four(天津科技大學(xué))
- 成品可靠性測試計劃
- 漢聲數(shù)學(xué)繪本《數(shù)是怎么來的》
- 人工智能基礎(chǔ)與應(yīng)用課件
- 仿制藥一致性評價
- 【譯林版】六年級英語(下冊)單詞默寫單
- 計算機二級wps題庫及答案
- 整套課件:工業(yè)催化
- 爆破安全管理知識培訓(xùn)
- 旅游地理學(xué)教案
- 煤矸石綜合利用途徑課件
- 企業(yè)信息公示聯(lián)絡(luò)員備案申請表
評論
0/150
提交評論