1. 程式人生 > >python 程式設計語言 筆記(三)

python 程式設計語言 筆記(三)

第三週 分支與迴圈

      3.1 程式基本結構

1. 程式流程圖 — 用規定的一系列圖形、流程線和文字說明演算法中的基本操作和控制流程。

    流程圖的基本元素包括:

(1)表示相應操作的框

(2)帶箭頭的流程線

(3)框內外必要的文字說明

        2. 設計程式框圖的步驟:

        (1)用自然語言表述演算法步驟

        (2)確定步驟邏輯結構,用相應框圖表示

        (3)流程線連線框圖,加上終端框,得到整個演算法的程式框圖

3. 任何演算法都可以由順序、選擇、迴圈三種基本結構組合實現:

 

(1)順序結構:按邏輯順序自上而下依次執行的結構,如:溫度轉換程式;

(2)選擇結構分支結構):在演算法中通過對條件的判斷,根據條件是否成立而選擇不同流向的演算法結構;

(3)迴圈結構:指在一定條件下反覆執行某部分程式碼的操作;

3.2 簡單分支

例:

PM2.5指數分級程式功能IPO模式描述:

              輸入:接受外部輸入PM2.5值

              處理:空氣質量分級演算法

              輸出:列印空氣質量提醒

          PM2.5指數分級虛擬碼

              If PM2.5值> 75

                     列印空氣汙染警告

              If PM2.5值< 35

                     列印空氣質量優,建議戶外運動

          流程圖如圖所示:

程式5:

  1. #pm25.py
  2. #空氣質量提醒
  3. def main():
  4. PM = eval(input("What is today'sPM2.5? "))
  5. # 列印相應提醒
  6. if PM > 75:
  7. print("Unhealthy. Becareful!")
  8. if PM < 35:
  9. print("Good. Go running!")
  10. main()

【執行結果】

輸出:                         輸入:

What is today'sPM2.5?     90

Unhealthy. Becareful!

(1)If語句格式:

If <condition>:

<body>

【注】<condition>是條件表示式,<body>是一個或多個語句序列

先判斷<condition>條件,若true,則執行<body>,再轉向下一條語句;

若false,則直接跳過<body>,轉向下一條語句

(2)簡單條件構造

  ① 簡單條件基本形式 <expr><relop> <expr>

  ② <relop>是關係操作符<, <=, ==, >=, >, !=

  ③ 使用“=”表示賦值語句,使用“==”表示等於

    ④ 除數字外,字元或字串也可以按照字典順序用於條件比較

  ⑤ <condition>是布林表示式,為bool型別

布林值的真假以True和False表示

        (3)二分支語法結構

If <condition>:

                                        <statements>

else:

                                        <statements>

程式6:

  1. # quadratic.py
  2. # 計算二次方程的實數根程式
  3. import math
  4. def main():
  5. print("Thisprogram finds the real solutions to a quadratic\n")
  6. a,b,c =eval(input("Please enter the coefficients(a,b,c): "))
  7. delta = b*b -4*a*c
  8. if delta >= 0:
  9. discRoot =math.sqrt(delta)
  10. root1 = (-b +discRoot) / (2*a)
  11. root2 = (-b -discRoot) / (2*a)
  12. print("\nThe solutions are:", root1, root2)
  13. else:
  14. print("Theequation has no real roots!")
  15. main()
【執行結果】

輸出:

This program finds the real solutions to a quadratic

                                                                             輸入:

Please enter the coefficients(a,b,c):                      1,2,3

The equation has no real roots!

3.3 多分支

(1)多分支決策

要解決雙根問題,就需要對delta等於0的情況進行處理。

語句的結構上要引入巢狀結構:

① 當delta < 0,處理無實根情況

② 當delta = 0,處理實根情況

③ 當delta > 0,處理雙根情況

一種方案是在程式中使用兩個if-else語句。

把一個複合語句放到另一個語句的結構之中稱為巢狀。

1. 多分支決策是解決複雜問題的重要手段之一

2. 一個三分之決策可以由兩個二分支結構巢狀實現

3. 使用if-else描述多分支決策時,

實現更多分支需要更多巢狀,影響程式易讀性

Python使用if-elif-else描述多分支決策,簡化分支結構的巢狀問題。

格式如下:

If <condition1>:

                            <case1 statements>

elif<condition2>:

                            <case2 statements>

elif<condition3>:

                            <case3 statements>

else:

                            <default statements>

例:程式7:

  1. # quadratic.py
  2. import math
  3. def main():
  4. print("This program finds the realsolutions to a quadratic\n")
  5. a,b,c =eval(input("Please enter the coefficients(a,b,c): "))
  6. delta = b*b - 4*a*c
  7. if a == 0:
  8. x = -b/c
  9. print("\nThere is ansolution", x)
  10. elif delta < 0:
  11. print("\nThe equation has no real roots!")
  12. elif dalta == 0:
  13. x = -b/(2*a)
  14. print("\nTheere is a double rootat", x)
  15. else:
  16. discRoot = math.sqrt(delta)
  17. root1 = (-b +discRoot) / (2*a)
  18. root2 = (-b -discRoot) / (2*a)
  19. print("\nThesolutions are:", root1, root2)
  20. main()
3.4 異常處理

       異常處理語句

              Python使用try…except…,可使程式不因執行錯誤而崩潰

Python的異常處理語句還可以使用else和finally關鍵字

可選項,若使用則else必須在finally之前)

格式如下:

try:

                                  <body>

except<ErrorType1>:

                                  <handler1>

except<ErrorType2>:

                                  <handler2>

except:

                                  <handler0>

                            else:

                                  <process_else>

                            finally:

                                  <process_finally>

              try…except可以捕捉任何型別的錯誤

對於二次方程,還會有其他可能的錯誤

如:輸入非數值型別(NameError)

輸入無效的表示式(SyntaxError)等

                此時可以用一個try語句配多個except來實現

程式8:

  1. # 異常處理測試
  2. def main():
  3. try:
  4. number1,number2 = eval(input("Enter two numbers,
  5. separated by a comma:"))
  6. result = number1/number2
  7. exceptZeroDivisionError:
  8. print("Division by zero!")
  9. exceptSyntaxError:
  10. print("Acomma may be missing in the input")
  11. else:
  12. print("Noexceptions, the result is", result)
  13. finally:
  14. print("executing the final clause")
  15. main()

【執行結果】

輸出:                                                            輸入:

Enter two numbers, separated by a comma: 1 2

A comma may be missing in the input

executing the final clause

Enter two numbers, separated by a comma: 3,2

No exceptions, the result is 1.5

executing the final clause

Enter two numbers, separated by a comma: 3,0

Division by zero!

executing the final clause