- Python從入門到項目實踐(超值版)
- 聚慕課教育研發中心
- 2489字
- 2020-01-20 14:50:20
6.5 分支結構程序舉例
計算機要處理的問題往往是復雜多變的,僅采用順序結構是不夠的,還需要利用分支結構來解決實際應用中的各種問題。在Python中可以通過if、elif、else等條件判斷語句來實現單分支、雙分支和多分支等分支結構。
使用分支結構需要注意以下問題。
(1)每個條件后面要使用冒號(:),表示接下來是滿足條件后要執行的語句塊。
(2)使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
(3)單分支結構if語句,也可以并列使用多條if語句實現對不同條件的判斷。
(4)在Python中沒有switch…case語句。
if語句的語句塊只有在條件表達式的結果的布爾值為真時才執行,否則將跳過語句塊執行該代碼塊后面的語句。
if語句中條件部分可以使用任何能夠產生True或False的語句形成判斷條件,最常見的方式是采用關系操作符,Python語言共有6個關系操作符。表6-2為if中常用的關系操作運算符。
表6-2 Python的關系操作符

注意:在Python中使用單等號“=”表示賦值語句,而使用雙等號“==”表示等于,要注意區分。
6.5.1 單分支結構

單分支結構if語句主要由三部分組成:關鍵字if,用于判斷結構真假的條件判斷表達式,以及當表達式為真時執行的代碼塊。if語句就是對語句中不同條件的值進行判斷,進而根據不同的條件執行不同的分支語句。
在Python中if語句的語法格式如下:

單分支結構的流程圖如圖6-9所示。
下面根據幾個簡單的小例子,來進一步了解一下單分支結構。
【例6-3】輸入兩個數a和b,比較它們的大小,輸出其中的較大數。a與b不能相同。

程序運行結果如圖6-10所示。
其運行的流程圖如圖6-11所示。

圖6-9 單分支語句流程圖

圖6-10 輸出較大值結果

圖6-11 輸出較大值流程圖
該程序是一個if單分支結構的程序,在執行過程中會按照鍵盤輸入兩個不同值的大小,選擇不同的語句執行。這是一個簡單的二段式的單支判斷。
下面再來看看另一個簡單的小例子。
【例6-4】輸入一個學生的成績,判斷其是否及格,判斷標準是,如果輸入的成績大于等于60,則屬于及格,否則為不及格。使用雙分支結構實現。

程序運行結果如圖6-12所示。
有興趣的讀者,可以試試畫出上面例子中程序的流程圖。

圖6-12 輸出成績結果
6.5.2 雙分支結構

雙分支結構是有兩個分支,如果條件成立,執行分支1語句,否則執行分支2語句,分支1語句和分支2語句都可以由一條或多條語句構成。在Python中if…else語句用來構成雙分支結構,語法格式如下:

雙分支結構的流程圖如圖6-13所示。

圖6-13 雙分支結構的流程圖
下面根據兩個簡單的小例子,來進一步了解一下雙分支結構。
【例6-5】輸入一個數,如果輸入的數比10大,則輸出該數。如果輸入的數比10小,則輸出10。

程序運行結果如圖6-14所示。

圖6-14 比較結果
其運行的流程圖如圖6-15所示。
該程序是一個if…else語句的雙分支結構的程序,在執行過程中會判定輸入的數與10的大小比較結果,而選擇不同的分支語句執行。
【例6-6】輸入一個學生的成績,判斷其是否及格,判斷標準是:如果輸入的成績大于等于60,則屬于及格,否則為不及格。使用雙分支結構實現。

程序運行結果如圖6-16所示。

圖6-15 與10比較的流程圖

圖6-16 輸出成績結果
有興趣的讀者,可以試試畫出上面例子中程序的流程圖。
6.5.3 多分支結構

雙分支結構只能根據條件表達式的真或假決定處理兩個分支中的一個。當實際處理的問題有多種條件時,就需要用到多分支結構。在Python中用if…elif…else描述多分支結構,語句格式如下:

多分支結構的流程圖如圖6-17所示。
下面根據兩個簡單的小例子,來進一步了解一下雙分支結構。

圖6-17 多分支結構的流程圖
【例6-7】輸入狗的年齡,求其對應的人類年齡,其對應關系為,當狗的年齡是1歲時,對應人類14歲,當狗的年齡是2歲時,對應人類22歲,當狗的年齡大于2歲時,每增加1歲,對應人類的年齡就增加5歲。

程序運行結果如圖6-18所示。

圖6-18 狗對應的年齡結果
其運行的流程圖如圖6-19所示。
下面再看看另一個例子。

圖6-19 輸出狗的年齡流程圖
【例6-8】輸入一個學生的成績,判斷其成績的級別,判斷標準是:如果輸入的成績小于60,則屬于不及格;輸入的成績大于等于60,小于70,則屬于及格;輸入的成績大于等于70,小于80,則屬于中等;輸入的成績大于等于80,小于90,則屬于良好;輸入的成績大于等于90,小于等于100,則屬于優秀。使用多分支結構實現。

程序運行結果如圖6-20所示。

圖6-20 成績等級結果
在使用多分支結構時要注意以下問題。
(1)無論有多少個分支,程序執行了一個分支后,其余分支不再執行。
(2)elif不能寫成elseif。
(3)當多分支中有多個表達式同時滿足時,則只執行第一個與之匹配的語句塊。因此,要注意多分支中表達式的書寫次序,防止某些值的過濾。
多分支結構是二分支結構的擴展,這種形式通常用于設置同一個判斷條件的多條執行路徑。Python測試條件的順序為條件表達式1、條件表達式2、……一旦遇到某個條件表達式為真的情況,則執行該條件下的語句塊,然后跳出分支結構。如果沒有條件為真,則執行else下面的語句塊。語句的作用是根據表達式的值確定執行哪個語句塊。
6.5.4 if語句嵌套結構

在嵌套if語句中,可以把if…elif…else結構放在另外一個if…elif…else結構中。語法格式如下:

下面根據一個簡單的小例子,來進一步了解一下if語句嵌套結構。
【例6-9】輸入一個數,判斷輸入的數字能否整除2或3,并給出運算結果。程序首先判斷數值能否整除2,如果能整除,再判斷是否能整除3,如二次判斷均成立則給出該數能同時整除2和3并輸出提示,否則僅給出能整除2的輸出提示。當第一個判斷整除2不成立時,則判斷是否能整除3,如判斷成立則說明能整除3不能整除2,否則給出該數值不能整除2和3。

程序運行結果如圖6-21所示。

圖6-21 整除結果
6.5.5 多重條件判斷

在Python編程中,經常會遇到多重條件比較的情況。在多重條件比較時,需要用到and或者or運算符。
注意以下問題。
(1)and——A and B:表示A和B兩個條件必須同時滿足才可以執行。
(2)or——A or B:表示A或B,兩個條件只要滿足其中的任意一個,就可以執行。
下面根據一個簡單的小例子,來進一步了解一下多重條件判斷結構。
【例6-10】輸入一個年齡,根據年齡段來判斷要辦什么樣的卡。青年卡或老年卡標準是18歲及以下或60歲以上。其他年齡是中年卡,本例要實現輸入一個年齡值,首先判斷是否是有效年齡,然后再判斷該年齡要辦什么樣的卡。

程序運行結果如圖6-22所示。

圖6-22 判斷結果