第4章python流程控制信電學(xué)院計(jì)算機(jī)系_第1頁
第4章python流程控制信電學(xué)院計(jì)算機(jī)系_第2頁
第4章python流程控制信電學(xué)院計(jì)算機(jī)系_第3頁
第4章python流程控制信電學(xué)院計(jì)算機(jī)系_第4頁
第4章python流程控制信電學(xué)院計(jì)算機(jī)系_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Python流程信電學(xué)院計(jì)算機(jī) 1流程類比:烹調(diào)=食材+烹制烹制過程:先炒再煮;如果淡了則加鹽;反復(fù)翻炒5常見的流程控制順序,跳轉(zhuǎn),分支,循環(huán),子程序好的流程:結(jié)構(gòu)清晰,易理解,易驗(yàn)證,2順分循3順分循4順序控制按語句的自然先后5編程溫度轉(zhuǎn)換程序華氏轉(zhuǎn)換f=input("TemperatureindegreesFarenheit:")c=(f-32)*5.0/9print"Temperatureindegrees6編程流程圖:用標(biāo)準(zhǔn)化的圖形符號來表示程序步流程圖中的步驟可以是不同抽象級7順分循8代碼一是簡二是可讀ififexpression:9Ifif表達(dá)式表達(dá)式為真需要執(zhí)行的語elif表達(dá)式表達(dá)式1為假,表達(dá)式2為真執(zhí)行的語句全部注:elif和else都可省略,elif分支控制可以選擇單分支if條件<語句體<條件>:布爾表達(dá)<語句體>:語句序列左邊需要“縮進(jìn)”四個(gè)空

布爾表<條件>是一個(gè)布爾表達(dá)結(jié)果為布爾值True或簡單布爾表達(dá)式<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式關(guān)系運(yùn)算數(shù)值比字符串比較:按字符字符序由編碼(ASCII等)決定.如:大寫字母在小寫字母前列表,元組布爾表復(fù)雜布爾表達(dá)式<布爾表達(dá)式1><布爾運(yùn)算><布爾表達(dá)式布爾運(yùn)算:andor,<布爾表達(dá)式1or<布爾表達(dá)式2>not<布爾表達(dá)式>and的定and表示“并且PandQ為真如果P和Q都為PQPandPQPandFFFTTT例>>>(3>2)and(2>>>>(3>2)and(2>or的定or表示“或者PorQ為假如果P和Q都為真值表見與日常用語中互斥的“或”不同PQPQPorFFFFTTTFTTTT>>>>>>

>2)or(3<=>3)or(2>not的定not表示“否定notP為真如果P為假PnotTFPnotTFFT例>>>not3>2>>>notnot3>布爾運(yùn)算符的優(yōu)not最高and次之or最Qaornotbandc何意A:aor((notb)and最好使用括號例:一局乒乓球比賽的結(jié)雙方任何人先得11a==11orb==更準(zhǔn)確的:一方至少要多2分才a-b-或者(a>=11orb>=11)andabs(a-b)>=編程溫度轉(zhuǎn)換程序增加熱浪告警f=input("TemperatureindegreesFarenheit:")c=(f–32)*5.0/print"Temperatureindegreesifc>print"Warning:Heat溫度轉(zhuǎn)換程序增加熱浪和寒潮告警f=input("TemperatureindegreesFarenheit:c=(f–32)*5.0/print"TemperatureindegreesCelsius:",cifc>=35:print"Warning:Heatifc<=-print"Warning:Cold分支語if條件<else-語句體if和else是非此即彼的關(guān)系下列語句對嗎ifc>=print"Warning:Heat print"Warning:Cold 多路分支:嵌套if-if語句可以多重嵌套難代碼松ifc>=print"Warning:Heatifc<=-print"Warning:Coldprint"Have語if條件<情形1語句體elif條件<情形2語句體elif條件<情形n語句體else其他情形語句體語義找到,l, 一條語句 編程溫度轉(zhuǎn)換f=input("TemperatureindegreesFarenheit:c=(f-32)*5.0/cif>=cprint"Have編程輸入成績,判斷是否通過pass_level=score=int(raw_input("Pleaseinputyourifprint'Congratulations,youpassedtheexamine.'Newblockstartsprint'No,youfailedtopasstheprint#Thislaststatementisalwaysexecuted,afterthestatementis編程根據(jù)考試成績將成績分為A,B,C,Dscorescore=int(raw_input("Pleaseinputyourscore:"))level='D’ifelifscorelevel='B'elifscore>=60:levelprint'YourScore:',score,"Your編程輸入x,y,判斷屬于第幾請輸入(1,1)在第一象提示:1.使用三個(gè)判斷,可使用判斷的嵌print“%d*%d=%d”%(i,j,i*j) 編程程序運(yùn)行錯(cuò)誤的程序編譯正確,但在運(yùn)例如:a/b語法沒錯(cuò),但運(yùn)行時(shí)萬一b=0,就會(huì)又如:輸入數(shù)據(jù)的類型和個(gè)數(shù)不對,,等 好的程序應(yīng)該是健壯的編程求一元二次方程根importa,b,c=input("Enter(a,b,c):")discRoot=math.sqrt(b*b-4*a*c)=+/=-/print"Thesolutionsare:",root1,運(yùn)行程序,輸入程 提高健壯性:使用錯(cuò)誤檢ifsome-error:編程解方程程序的改進(jìn)importa,b,c=input("Enter(a,b,c):discrim=b*b-4*a*ifdiscrim>=discRoot==(-bdiscRoot)/(2=(-bdiscRoot)/(2print"Thesolutionsare:",root1,print"Theequationhasnoreal提高健壯性:利用函數(shù)返調(diào)用者無條件調(diào)用函數(shù),并檢測返回值例如,為了解決sqrt函數(shù)的問題,設(shè)計(jì)defifx<return-return則程序ifrobustSqrt(b*b4*a*c)<健壯但算法不清晰ifdoStep1()==elifdoStep2()==elifdoStep3()==健壯但算法不清晰ifdoStep1()==elifdoStep2()==elifdoStep3()==xdoOneThing()ifx==異常處理代或?qū)懗蒳f異常處理代

== 異常能否既健壯,又不破壞原來算法的清晰異常處理程序運(yùn)行時(shí)如果出錯(cuò)則"拋出"一個(gè)"異常程序員能編寫代碼"捕獲"并處理異常 Python的缺省異基本就是中止程序的執(zhí)行并顯示一些錯(cuò)誤信息>>>a= >>>printTraceback(mostrecentcall"<stdin>",line1,in

IndexError:stringindexoutof程序員自定義異>>>a= >>>printa[5]exceptIndexError:print"Indexwrong!"Indexwrong!異常處理機(jī)制的 exceptexcept錯(cuò)誤處理ifdoStep1ERROR:elifdoStep2()==錯(cuò)誤處理代碼elifdoStep3()==錯(cuò)誤處理代碼異常處理可以對不同類型的錯(cuò)誤except錯(cuò)誤類型<異常處理程序except錯(cuò)誤類型<其他異常的處理程序編程解方程程序的改進(jìn):用異常處理語句來捕math.sqrt的溢出importa,b,c=input("Enter(a,b,c):discRoot=math.sqrt(b*b-4*a*=(-b/(2=(-b/(2print"Thesolutionsare:",root1,exceptprint"Theequationhasnoreal順分循為什么需要循環(huán)為什么需要循環(huán)例如:在屏幕上顯示printprintprintprintprint繁瑣且不具有擴(kuò)展性(顯示1~10000怎么辦循環(huán):用很少的語句表達(dá)重復(fù)執(zhí)行的很多語 forfor循環(huán)可遍歷對象,并可進(jìn)行迭代forTARGETin在循環(huán)正常退出時(shí),會(huì)執(zhí)行else塊for語for循環(huán)控制變量in序列<循環(huán)體例如foriin顯示1~10000:用[1,2,...,10000]顯然不合適,以用for循環(huán)的流for語句中序計(jì)數(shù)器:序列只是用來控制循環(huán)的次數(shù)foriinrange(10):print"煩"循環(huán)體 循環(huán)變量數(shù)據(jù):序列本身是循環(huán)體處理的數(shù)據(jù)foriinrange(10):printi*i循環(huán) 循環(huán)變量兩種遍歷方直接遍歷>>>data=['Born>>>fordinprint通過索引>>>data=['Born>>>foriinrange(len(data)):printdata[i],可以更靈活地處理序列數(shù)據(jù),):>>>foriin):用for處理各>>>forcin" oworld":printc元>>>foriinprint嵌套序列:>>>fortinprint循環(huán)索引的 o以元素進(jìn)行索以下標(biāo)進(jìn)行索同時(shí)使用標(biāo)和

forainprint oforiinfori,afori,ainenumerate(s):printi,a,循環(huán)控制pass不做任何打印第一打印100以內(nèi)的素列出未whilefor主要用于確定次數(shù)不確定次數(shù)的循環(huán)while布爾表達(dá)式<循環(huán)體whilewhile進(jìn)行循環(huán)控制,它對表達(dá)式 ,如果為真,則循環(huán)執(zhí)行while如果測試為假,則會(huì)執(zhí)行else塊如果循環(huán)被中斷(break),elsewhile循環(huán)的特循環(huán)前若不滿足,則循環(huán)體一次都循環(huán)體必須影響下一次條件測試否則導(dǎo)致無窮循例如:for循環(huán)改寫成whilei=whilei<printi=i+若忘了最后一條語句會(huì)怎樣常用循環(huán)模式:根據(jù)用戶交互來決定是否例:求sum=moredata=whilemoredata[0]==x=input("Inputanumber:")sum=sum+xmoredata=print"Thesumis",常用循環(huán)模式:交互循環(huán)不斷要用戶輸入moredata,很煩人對哨兵唯一的要求就是能與普通數(shù)據(jù)區(qū)算法模式前導(dǎo)while該數(shù)據(jù)不是哨兵:循環(huán)尾輸入(下一個(gè)數(shù)據(jù)哨兵循正常數(shù)據(jù)是非負(fù)數(shù),則可以-1作為哨兵sum=x=input("Inputanumber(-1toquit):whilex>=sum=sum+x=input("Inputanumber(-1toprint"Thesumis",哨兵循正常數(shù)據(jù)是任何實(shí)數(shù),則可以空串作為哨兵sum=x=raw_input("Inputanumber(<Enter>toquit):")whilex!="":sum=sum+x=raw_input("Inputanumber(<Enter>toprint"Thesumis",常用循環(huán)模式:后測試循輸入驗(yàn)證問題檢查用戶輸入是否符合要求,不符合就要求用戶重新輸入,直至符為止這是一種后測試循環(huán)執(zhí)行循環(huán)體后才測試循環(huán)體至少執(zhí)行直至條件成立才退出有些語言提供repeat…until語Python可用while只需確保首次進(jìn)入while時(shí)條件x=whilex<0:常用循環(huán)模式:whilewhilecount<n:處理count=count+ii=whileprintii=i=whileprintii=i-循 中斷中止本輪循環(huán),結(jié)束break所處循環(huán)語句常與whileTrue形式的無窮循環(huán)配合例1:輸 檢whilexinput("請輸入非負(fù)數(shù):")ifx>=0:break例2:break也可以跳出forforiinprint煩ifi>4:慎用break!尤其是一個(gè)循環(huán)體中有多個(gè)循 中斷例:對列a=

=iinifa%2==0:sum=sum+iprintsum常用循環(huán)模式:一個(gè)循環(huán)的循環(huán)體中有另一個(gè)循環(huán)數(shù)學(xué)中向量是一維序列,矩陣是二維序用嵌套循環(huán)遍歷矩陣元素a=sum=foriinforjinsum=sum+print嵌套循打印9*90123456789123456789 重循print語句可使用格式化字符串,如print嵌套循打印乘法關(guān)鍵是輸出的>>>foriinforjinprint"%dx%d=%-2d"%你猜是多少?(1-你猜的數(shù)太小你猜是多少?(1-你猜的數(shù)太小你還有4次機(jī)會(huì)!你猜的數(shù)太小你還有3次機(jī)會(huì)!你猜的數(shù)太小!你還有2次機(jī)會(huì)使用while判斷,如未猜對繼續(xù)循if/elif/else判斷是否大于、小于、等使用importrandom和random.randint(1,100)可獲得1-100的隨在程序首行加入#encoding=utf-8可使用漢程序設(shè)計(jì)的早期:手工作坊程序規(guī)模小,功能要在有限內(nèi)存憑借程序員的個(gè)人編程后來:作為工程來開程序規(guī)模大,功能依靠系統(tǒng)程序開發(fā)明確需求:問題是什么?用戶要求是什么制定程序規(guī)格:描述“做什么設(shè)計(jì)程序邏輯:描述實(shí)現(xiàn):用編程語言編寫代碼:根據(jù)用戶需求持續(xù)改進(jìn)程序什么是好的即使各種程序都正確,仍然有好壞之分除了正確性,好的程序應(yīng)該是效率易理易可擴(kuò)如何得到好手工作坊階段靠的是個(gè)人如今則依靠程序設(shè)計(jì)方法和工方法:結(jié)構(gòu)化方法,模塊化方法,面向?qū)ο蠊ぞ?建模工具,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論