




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)處理的流程控制數(shù)據(jù)處理的流程控制循環(huán)控制結(jié)構(gòu)循環(huán)控制結(jié)構(gòu)2 2 2為什么需要循環(huán)為什么需要循環(huán)? 有時需要重復(fù)做相同或相似的事情有時需要重復(fù)做相同或相似的事情,程序中如何程序中如何表達表達? 例如例如:在屏幕上顯示在屏幕上顯示15print 1print 2print 3print 4print 5 繁瑣且不具有擴展性繁瑣且不具有擴展性(顯示顯示110000怎么辦怎么辦?) 循環(huán)循環(huán):用很少的語句表達重復(fù)執(zhí)行的很多語句用很少的語句表達重復(fù)執(zhí)行的很多語句.3 3 3for循環(huán)循環(huán) 語法語法for in : 語義語義:令令取遍取遍中的每個中的每個值值,并對變量所取的每個值執(zhí)行一遍循環(huán)體并對變量
2、所取的每個值執(zhí)行一遍循環(huán)體. 例如例如:for i in 1,2,3,4,5: print i 顯示顯示110000:用用1,2,.,10000顯然不合適顯然不合適,可以用可以用range()34 4 4for循環(huán)的流程圖循環(huán)的流程圖4for語句中序列的作用語句中序列的作用 計數(shù)器計數(shù)器:序列只是用來控制循環(huán)的次數(shù)序列只是用來控制循環(huán)的次數(shù).for i in range(10): print 煩煩 循環(huán)體不引用循環(huán)變量循環(huán)體不引用循環(huán)變量. 數(shù)據(jù)數(shù)據(jù):序列本身是循環(huán)體處理的數(shù)據(jù)序列本身是循環(huán)體處理的數(shù)據(jù).for i in range(10): print i*i 循環(huán)體引用循環(huán)變量循環(huán)體引用循
3、環(huán)變量. 兩種遍歷方式兩種遍歷方式(見下一頁見下一頁)5用用for處理序列數(shù)據(jù)處理序列數(shù)據(jù) 直接遍歷序列直接遍歷序列 data = Born on:,July,2,2005 for d in data: print d, 通過索引遍歷序列通過索引遍歷序列 data = Born on:,July,2,2005 for i in range(len(data): print datai, 可以更靈活地處理序列數(shù)據(jù)可以更靈活地處理序列數(shù)據(jù),如如 for i in range(0,len(data),3): .6 6用用for處理各種序列數(shù)據(jù)處理各種序列數(shù)據(jù) 字符串字符串 for c in hell
4、o world: print c 元組元組 for i in (1,2,3): print i 嵌套序列嵌套序列:如元組的列表如元組的列表 for t in (1,2),(3,4),(5,6): print t,t0,t1 7 78 8while循環(huán)循環(huán) for主要用于確定次數(shù)的循環(huán)主要用于確定次數(shù)的循環(huán) 不確定次數(shù)的循環(huán)不確定次數(shù)的循環(huán):whilewhile : 9 9 9while循環(huán)的特點循環(huán)的特點 循環(huán)前測試條件循環(huán)前測試條件 若不滿足若不滿足,則循環(huán)體一次都不執(zhí)行則循環(huán)體一次都不執(zhí)行 循環(huán)體必須影響下一次條件測試循環(huán)體必須影響下一次條件測試! 否則導(dǎo)致否則導(dǎo)致無窮循環(huán)無窮循環(huán) 例如例
5、如:for循環(huán)改寫成循環(huán)改寫成while循環(huán)循環(huán)i = 0while i = 0: sum = sum + x x = input(Input a number (-1 to quit): )print The sum is, sum 1212哨兵循環(huán)例哨兵循環(huán)例(2) 正常數(shù)據(jù)是任何實數(shù)正常數(shù)據(jù)是任何實數(shù),則可以空串作為哨兵則可以空串作為哨兵:sum = 0 x = raw_input(Input a number ( to quit): )while x != : sum = sum + eval(x) x = raw_input(Input a number ( to quit): )p
6、rint The sum is, sum 1313常用循環(huán)模式常用循環(huán)模式:后測試循環(huán)后測試循環(huán) 輸入驗證問題輸入驗證問題: 檢查用戶輸入是否符合要求檢查用戶輸入是否符合要求,不符合就要求用戶重新輸入不符合就要求用戶重新輸入,直至直至符合為止符合為止. 這是一種后測試循環(huán)這是一種后測試循環(huán): 執(zhí)行循環(huán)體后才測試條件執(zhí)行循環(huán)體后才測試條件 循環(huán)體至少執(zhí)行一次循環(huán)體至少執(zhí)行一次 直至條件成立才退出循環(huán)直至條件成立才退出循環(huán) 有些語言提供有些語言提供repeatuntil語句語句 Python可用可用while實現(xiàn)實現(xiàn) 只需確保首次進入只需確保首次進入while時條件成立時條件成立x = 1whil
7、e x 0: .1414常用循環(huán)模式常用循環(huán)模式:while計數(shù)器循環(huán)計數(shù)器循環(huán) 用用while實現(xiàn)計數(shù)器循環(huán)實現(xiàn)計數(shù)器循環(huán)計數(shù)器計數(shù)器count置為置為0while count n: 處理代碼處理代碼 count count + 115i = 0while i0: print i i = i-115循環(huán)非正常中斷循環(huán)非正常中斷:break 中止本輪循環(huán)中止本輪循環(huán),結(jié)束結(jié)束break所處循環(huán)語句所處循環(huán)語句. 常與常與while True形式的無窮循環(huán)配合使用形式的無窮循環(huán)配合使用 例例1:輸入合法性檢查輸入合法性檢查while True: x = input(請輸入非負數(shù)請輸入非負數(shù):)
8、if x = 0: break 例例2:break也可以跳出也可以跳出for循環(huán)循環(huán)for i in range(10): print 煩煩 if i 4: break 慎用慎用break!尤其是一個循環(huán)體中有多個尤其是一個循環(huán)體中有多個break.16循環(huán)非正常中斷循環(huán)非正常中斷:continue 中止本輪循環(huán)中止本輪循環(huán),控制轉(zhuǎn)移到所處循環(huán)語句的開頭控制轉(zhuǎn)移到所處循環(huán)語句的開頭繼續(xù)繼續(xù)下一輪循環(huán)下一輪循環(huán). 例例:對列表中的奇數(shù)求和對列表中的奇數(shù)求和a = 23,28,39,44,50,67,99sum = 0for i in a: if i % 2 = 0: continue sum =
9、 sum + iprint sum17常用循環(huán)模式常用循環(huán)模式:嵌套循環(huán)嵌套循環(huán) 一個循環(huán)的循環(huán)體中有另一個循環(huán)一個循環(huán)的循環(huán)體中有另一個循環(huán). 如果序列的成員本身又是序列如果序列的成員本身又是序列,就需要嵌套循環(huán)就需要嵌套循環(huán)來處理來處理. 數(shù)學(xué)中向量是一維序列數(shù)學(xué)中向量是一維序列,矩陣是二維序列矩陣是二維序列 用嵌套循環(huán)遍歷矩陣元素用嵌套循環(huán)遍歷矩陣元素:a = 11,12,13,14,21,22,23,24,31,32,33,34sum = 0for i in a: for j in i: sum = sum + jprint sum18嵌套循環(huán)例嵌套循環(huán)例 打印乘法口訣表打印乘法口訣表
10、 關(guān)鍵是輸出的排列關(guān)鍵是輸出的排列 for i in range(1,10): for j in range(1,i+1): print %dx%d=%-2d % (j,i,j*i), print1x1=11x2=2 2x2=41x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=161x5=5 2x5=10 3x5=15 4x5=20 5x5=251x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=361x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=491x8=8 2x8=16 3x8=24 4x8
11、=32 5x8=40 6x8=48 7x8=56 8x8=641x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 19程序設(shè)計的發(fā)展程序設(shè)計的發(fā)展 早期早期:手工作坊式手工作坊式 程序規(guī)模小程序規(guī)模小,功能簡單功能簡單 要在有限內(nèi)存中盡快完成計算要在有限內(nèi)存中盡快完成計算 憑借程序員的個人編程技巧憑借程序員的個人編程技巧 后來后來:作為工程來開發(fā)作為工程來開發(fā) 程序規(guī)模大程序規(guī)模大,功能復(fù)雜功能復(fù)雜 內(nèi)存和速度不是問題內(nèi)存和速度不是問題,軟件正確性和開發(fā)效軟件正確性和開發(fā)效率變得突出率變得突出 依靠系統(tǒng)化的開發(fā)方法和工具依
12、靠系統(tǒng)化的開發(fā)方法和工具20程序開發(fā)周期程序開發(fā)周期 明確需求明確需求:問題是什么問題是什么?用戶要求是什么用戶要求是什么? 制定程序規(guī)格制定程序規(guī)格:描述描述“做什么做什么”. 設(shè)計程序邏輯設(shè)計程序邏輯:描述描述“怎么做怎么做”. 實現(xiàn)實現(xiàn):用編程語言編寫代碼用編程語言編寫代碼. 測試與排錯測試與排錯:用樣本數(shù)據(jù)執(zhí)行程序用樣本數(shù)據(jù)執(zhí)行程序,測試結(jié)測試結(jié)果是否與預(yù)期吻合果是否與預(yù)期吻合.有錯則排錯有錯則排錯. 維護維護:根據(jù)用戶需求持續(xù)改進程序根據(jù)用戶需求持續(xù)改進程序.21什么是好的程序什么是好的程序 解決同一個問題解決同一個問題,可以設(shè)計出多種處理過可以設(shè)計出多種處理過程程,即編制多種程序即
13、編制多種程序. 即使各種程序都正確即使各種程序都正確,仍然有好壞之分仍然有好壞之分. 除了正確性除了正確性,好的程序應(yīng)該是好的程序應(yīng)該是: 效率高效率高 易理解易理解 易維護易維護 可擴展可擴展22如何得到好的程序如何得到好的程序 手工作坊階段靠的是個人編程技巧手工作坊階段靠的是個人編程技巧 如今則依靠程序設(shè)計如今則依靠程序設(shè)計方法方法和和工具工具 方法方法:結(jié)構(gòu)化方法結(jié)構(gòu)化方法,模塊化方法模塊化方法,面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ǖ鹊?工具工具:建模工具建模工具,集成開發(fā)環(huán)境集成開發(fā)環(huán)境,項目管理工具項目管理工具等等23結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計(1) 確保程序具有良好的文本結(jié)構(gòu)確保程序具有良好
14、的文本結(jié)構(gòu), 使程序易使程序易理解理解,易驗證易驗證,易維護易維護. 基本原則基本原則 只使用順序只使用順序,分支分支,循環(huán)三種基本控制結(jié)構(gòu)循環(huán)三種基本控制結(jié)構(gòu) goto有害有害好在好在goto不是必須的不是必須的break和和continue有點類似有點類似goto,因此要慎用因此要慎用24結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計(2) 單入口單出口的程序塊單入口單出口的程序塊多條語句可以組合成程序塊多條語句可以組合成程序塊,只要是單入口單出只要是單入口單出口口,仍然可當(dāng)作一條語句仍然可當(dāng)作一條語句.25編程案例編程案例:求最大值求最大值(1) 先考慮求三個數(shù)先考慮求三個數(shù)x1,x2,x3的最大值的問題
15、的最大值的問題 策略策略1:每個數(shù)都與其他數(shù)比較大小每個數(shù)都與其他數(shù)比較大小if x1 = x2 and x1 = x3: max = x1elif x2 = x1 and x2 = x3: max = x2else: max = x3 此算法中各分支彼此獨立此算法中各分支彼此獨立.但實際上一個分支的信息但實際上一個分支的信息對其他分支是有用的對其他分支是有用的! 此算法不適合較大此算法不適合較大n的情況的情況2626編程案例編程案例:求最大值求最大值(2) 策略策略2:判定樹判定樹if x1 = x2: if x1 = x3: max = x1 else: max = x3else: if
16、x2 = x3: max = x2 else: max = x327好處好處:只需兩次比較只需兩次比較,效率高效率高.壞處壞處:結(jié)構(gòu)復(fù)雜結(jié)構(gòu)復(fù)雜27編程案例編程案例:求最大值求最大值(3) 策略策略3:順序處理順序處理,記錄當(dāng)前最大值記錄當(dāng)前最大值.max = x1if x2 = max: max = x2if x3 = max: max = x3 效率高效率高 易讀易理解易讀易理解 可擴展到可擴展到n28n = input(How many numbers? )max = input(Input a number: )for i in range(n-1): x = input(Input a number: ) if x max: max = xprint max =, max 28編程案例編程案例:求最大值求最大值(4) 策略策略4:利用現(xiàn)成代碼利用現(xiàn)成代碼. Python提供內(nèi)建函數(shù)提供內(nèi)建函數(shù)max(x1,
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材購貨合同范本
- 家電的合同范本
- 餐廳托管合同范本
- 簽訂保潔車合同范本
- 施工合同范本規(guī)定
- 2025-2030年中國甲苯二異氰酸酯行業(yè)運行動態(tài)及前景趨勢分析報告
- 2025-2030年中國環(huán)鏈電動葫蘆行業(yè)發(fā)展趨勢規(guī)劃研究報告
- 醫(yī)療機構(gòu)合同管理及信息化措施
- 社交電商與網(wǎng)紅直播帶貨的融合趨勢分析
- 2025-2030年中國消防火災(zāi)報警系統(tǒng)行業(yè)發(fā)展規(guī)模及投資戰(zhàn)略研究報告
- 圓柱的表面積(說課稿)-2023-2024學(xué)年六年級下冊數(shù)學(xué)北師大版
- 《神經(jīng)系統(tǒng)MRI解讀》課件
- 2024年江蘇信息職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025年學(xué)校春季開學(xué)典禮校長講話致辭 (匯編11份)
- 城市軌道交通專業(yè)英語(第三版) 課件 U7 Tram
- 高等院校附屬醫(yī)院醫(yī)共體合作制度
- 2025年中國半導(dǎo)體第三方檢測行業(yè)市場集中度、市場規(guī)模及未來前景分析報告
- 2025年餐飲部主管年度工作計劃
- 中華人民共和國保守國家秘密法實施條例培訓(xùn)課件
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識 CCAA年度確認 試題與答案
評論
0/150
提交評論