




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三周 分支與循環(huán) 3.1 程序基本結構1. 程序流程圖 用規(guī)定的一系列圖形、流程線和文字說明算法中的基本操作和控制流程。 流程圖的基本元素包括:(1)表示相應操作的框(2)帶箭頭的流程線(3)框內外必要的文字說明 2. 設計程序框圖的步驟: (1)用自然語言表述算法步驟 (2)確定步驟邏輯結構,用相應框圖表示 &
2、#160; (3)流程線連接框圖,加上終端框,得到整個算法的程序框圖3. 任何算法都可以由順序、選擇、循環(huán)三種基本結構組合實現(xiàn): (1)順序結構:按邏輯順序自上而下依次運行的結構,如:溫度轉換程序;(2)選擇結構(分支結構):在算法中通過對條件的判斷,根據(jù)條件是否成立而選擇不同流向的算法結構;(3)循環(huán)結構:指在一定條件下反復執(zhí)行某部分代碼的操作;3.2 簡單分支 例:PM2.5指數(shù)分級程序功能IPO模式描述:
3、0; 輸入:接受外部輸入PM2.5值 處理:空氣質量分級算法 輸出:打印空氣質量提醒 PM2.5
4、指數(shù)分級偽代碼 If PM2.5值> 75 打印空氣污染警告
5、60; If PM2.5值< 35 打印空氣質量優(yōu),建議戶外運動 流程圖如圖所示:程序5:python view plain copy1. #pm25.py 2. #空氣質量提醒 &
6、#160;3. 4. def main(): 5. PM = eval(input("What is today'sPM2.5? ") 6. # 打印相應提醒 7. if PM > 75: 8. &
7、#160; print("Unhealthy. Becareful!") 9. if PM < 35: 10. print("Good. Go running!") 11. main()
8、160;【運行結果】輸出: 輸入:What is today'sPM2.5? 90Unhealthy. Becareful!(1)If語句格式:If <condition>:<body>【注】<condition>是條件
9、表達式,<body>是一個或多個語句序列先判斷<condition>條件,若true,則執(zhí)行<body>,再轉向下一條語句;若false,則直接跳過<body>,轉向下一條語句(2)簡單條件構造 簡單條件基本形式 <expr><relop> <expr> <relop>是關系操作符<, <=, =, >=, >, != 使用“=”表示賦值語句,使用“=”表示等于
10、0; 除數(shù)字外,字符或字符串也可以按照字典順序用于條件比較 <condition>是布爾表達式,為bool類型布爾值的真假以True和False表示 (3)二分支語法結構If <condition>:
11、0; <statements>else:
12、0; <statements>程序6:python view plain copy1. # quadratic.py 2. # 計算二次方程的實數(shù)根程序 3. import math 4. def main(): 5. print("Thisprogram finds the
13、160;real solutions to a quadraticn") 6. a,b,c =eval(input("Please enter the coefficients(a,b,c): ") 7. delta = b*b -4*a*c 8. &
14、#160;if delta >= 0: 9. discRoot =math.sqrt(delta) 10. root1 = (-b +discRoot) / (2*a) 11.
15、0; root2 = (-b -discRoot) / (2*a) 12. print("nThe solutions are:", root1, root2) 13. else: 14.
16、0; print("Theequation has no real roots!") 15. main() 【運行結果】輸出:This program finds the real solutions to a quadratic
17、160; &
18、#160; 輸入:Please enter the coefficients(a,b,c): 1,2,3The equation has no real roots!3.3 多分支(1)多分支決策要解決雙根問題,就需要對delta等于0的情況進行處理。語句的結構上要引入嵌套結構: 當delta < 0,處
19、理無實根情況 當delta = 0,處理實根情況 當delta > 0,處理雙根情況一種方案是在程序中使用兩個if-else語句。把一個復合語句放到另一個語句的結構之中稱為嵌套。1. 多分支決策是解決復雜問題的重要手段之一2. 一個三分之決策可以由兩個二分支結構嵌套實現(xiàn)3. 使用if-else描述多分支決策時,實現(xiàn)更多分支需要更多嵌套,影響程序易讀性Python使用if-elif-else描述多分支決策,簡化分支結構的嵌套問題。格式如下:If <condition1>:
20、 <case1 statements>elif<condition2>:
21、0; <case2 statements>elif<condition3>: <case3 statements>else:
22、60; <default statements>例:程序7:python view plain copy1. # quadratic.py 2. import math 3. def main(): 4.
23、 print("This program finds the realsolutions to a quadraticn") 5. a,b,c =eval(input("Please enter the coefficients(a,b,c): ") 6
24、. delta = b*b - 4*a*c 7. if a = 0: 8. &
25、#160; x = -b/c 9. print("nThere is ansolution", x) 10.
26、60; elif delta < 0: 11. print("nThe equation has no real roots!") 12. elif dalta = 0: 13.
27、160; x = -b/(2*a) 14. print("nTheere is a double rootat", x) 15. else: 16.
28、0; discRoot = math.sqrt(delta) 17. root1 = (-b +discRoot) / (2*a) 18.
29、 root2 = (-b -discRoot) / (2*a) 19. print("nThesolutions are:", root1, root2) 20. main() 3.4 異常處理 異常處理語句
30、0; python使用tryexcept,可使程序不因運行錯誤而崩潰Python的異常處理語句還可以使用else和finally關鍵字(可選項,若使用則else必須在finally之前)格式如下:try: &
31、#160; <body>except<ErrorType1>: <handler1&g
32、t;except<ErrorType2>: <handler2>except:
33、160; <handler0>
34、160; else: <process_else>
35、; finally:
36、160; <process_finally> tryexcept可以捕捉任何類型的錯誤對于二次方程,還會有其他可能的錯誤如:輸入非數(shù)值類型(NameError)輸入無效的表達式(SyntaxError)等 此時可以用一個try語句配多個except來實現(xiàn)程序8:python view plain copy1. # 異常
37、處理測試 2. def main(): 3. try: 4. number1,number2 = eval(input("Enter two numbers, 5. separated by a comma:") 6. &
38、#160; result = number1/number2 7. exceptZeroDivisionError: 8. print("Division by zero!") 9. exceptSyntaxError: 10
39、. print("Acomma may be missing in the input") 11. else: 12. print("Noexceptions, the result is&quo
40、t;, result) 13. finally: 14. print("executing the final clause") 15. main() 【運行結果】輸出:
41、60; 輸入:Enter two numbers
42、, separated by a comma: 1 2A comma may be missing in the inputexecuting the final clause Enter two numbers, separated by a comma: 3,2No exceptions, the result is 1.5executing the final clause Enter two numbers, separated by a comma: 3,0Division by zero!executing the final clause· 【實例】
43、三者最大值· 【IPO】 輸入:三個數(shù)值 處理:三者最大算法 輸出:打印最大值· 【算法比較】 通盤比較 將每一個值與其他所有值比較以確定最大值 三個值的情況比較簡單,如果是五值比較復雜,而且效率低 (因為表達式?jīng)]有被充分利用) 決策樹 避免冗余比較 結構更加復雜! 順序處理 逐個掃描每個值,保留最大者 【程序】程序9:# program: maxn.py# 尋找一組數(shù)中的最大值def main(): n = eval(input("H
44、ow many numbers are there?") # 將第一個值賦值給max max = eval(input("Enter a number >>") # 連續(xù)與后面n-1值進行比較 for i in range(n-1): x = eval(input("Enter a number >>") if x > max: max = x print("The largest value is", max)main()· 1· 2· 3· 4
45、3; 5· 6· 7· 8· 9· 10· 11· 12· 13· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 11· 12· 13【運行結果】 How many numbers are there? 5 Enter a number >> 9 Enter a number >> 6 Enter a num
46、ber >> 3 Enter a number >> 10 Enter a number >> 20 The largest value is 20 使用Python內置函數(shù)max() 3.5 基本循環(huán)結構(1)for循環(huán)Python可以使用for語句循環(huán)遍歷整個序列的值,格式如下:for <var> in <sequence>: <body>· 1· 2· 1· 2在for循環(huán)中,循環(huán)變量var遍歷了隊列中的每一個值,循環(huán)變量var遍歷了隊列
47、中的每一個值,循環(huán)語句體為每個值執(zhí)行一次例:for循環(huán)求平均數(shù)· IPO: 輸入:待輸入數(shù)字個數(shù),數(shù)字 處理:平均數(shù)算法 輸出:平均數(shù) 通用設計方案: o 輸入數(shù)字的個數(shù)no 將sum初始化為0o 循環(huán)n次: § 輸入數(shù)字x§ 將x加入sum中o 將sum/n作為平均數(shù)輸出出來· 程序10:#average1.pyn = eval(input("How many numbers?")sum = 0.0for i in range(n): x = eval(input(&quo
48、t;Enter a number >>") sum = sum + xprint("nThe average is", sum/n)· 1· 2· 3· 4· 5· 6· 7· 1· 2· 3· 4· 5· 6· 7【運行結果】 How many numbers? 3 Enter a number >> 5 Enter a number >> 7 En
49、ter a number >> 6The average is 6.0for循環(huán)的缺點:程序開始時必須提供輸入數(shù)字總數(shù),以提供固定循環(huán)次數(shù) 大規(guī)模數(shù)字則需要用戶數(shù)清楚個數(shù) 為此,python提供了另一種循環(huán)模式即無限循環(huán),不需要提前知道循環(huán)次數(shù)(2)while循環(huán)語句格式:while <condition> <body>· 1· 2· 1· 2條件總是在循環(huán)體執(zhí)行之前被判斷,這種結構又被稱為前測循環(huán)(當型循環(huán)) 如果循環(huán)體沒有對i初始化或循環(huán)體沒有累加,條件判斷一直為真,循環(huán)體將一直執(zhí)行,
50、即為死循環(huán)程序,這時通常使用Ctrl+C來終止一個程序(3)break語句 退出循環(huán)例:程序11:#TestBreak.pysum = 0number = 0while number < 20: number += 1 sum += number if sum > 100: breakprint("The number is", number)print("The sum is", sum)· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10【運行結果】 The number is 14 The sum is 105(4)continue 結束本次循環(huán)即跳出循環(huán)體中下面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年原乙酸三甲酯合作協(xié)議書
- 2025年高效余熱回收裝置合作協(xié)議書
- 農(nóng)業(yè)生產(chǎn)中精準信息技術合作實施協(xié)議
- 智能農(nóng)業(yè)解決方案供應與維護協(xié)議
- 制造業(yè)離職證明及再就業(yè)指南(7篇)
- 2025年哈密危運資格證考試題
- 農(nóng)村耕地長期流轉合同書
- 2025年碳酸甲乙酯合作協(xié)議書
- 農(nóng)業(yè)技術推廣合同
- 別墅建筑工程承包協(xié)議
- 2025年高空車作業(yè)考試題及答案
- 蜱蟲預防卡通
- 股骨干骨折知識
- 非遺文化產(chǎn)業(yè)發(fā)展-深度研究
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識答案
- 基于大數(shù)據(jù)的社區(qū)健康監(jiān)測-深度研究
- 丙酸鉻、淀粉酶對黃羽肉雞生長性能、抗氧化和腸道健康的影響
- 光伏發(fā)電新能源課件
- 《無人機電力巡檢紅外圖像分析技術規(guī)范》
- 2025年廣東省高中學業(yè)水平考試綜合測評卷(二)政治試題(含解析)
- 老舊小區(qū)改造給排水施工方案
評論
0/150
提交評論