- 從零開始:Python快速入門教程
- 侯惠芳主編
- 3186字
- 2021-08-17 17:28:01
4.2 選擇結構

選擇結構是一種條件控制語句,包含一個條件表達式,如果條件為真,則執行某些語句;條件為假則執行另外一些語句。選擇結構讓程序能夠根據條件表達式選擇應該執行的程序代碼,就好比開車到十字路口,可以根據不同的情況來選擇不同的路徑,如圖4.2所示。

圖4.2
4.2.1 if條件語句
對Python程序來說,i f條件語句是個使用頻率高且實用的語句。當if的判斷條件成立(返回1)時,程序將執行縮進的程序語句塊;判斷條件不成立(返回0)時,則不執行縮進的程序語句塊,并結束if語句。在設計程序的過程中,如果遇到只有單一測試條件的情況,就需要用到if條件語句來進行程序的編寫。其語法如下所示。
if 條件表達式: 程序語句塊
if語句搭配條件表達式可以進行布爾判斷來取得真值或假值。條件表達式之后要有“:”來作為縮進的開始。當條件表達式的執行結果為真時,就必須執行這個程序語句塊。
Tips 注意,在Python的條件式判斷中,符合條件時需要執行的程序語句塊內的所有程序語句都必須縮進,否則解譯時會產生錯誤。
例如下面的代碼。
# test_score=80 if test_score>=60: print("You Pass!")
其執行結果如圖4.3所示。

圖4.3
下面的程序范例使用if條件語句簡單判斷消費金額是否滿1200元,如果沒有滿1200元,則加收10%的服務費。
【程序范例:if.py】使用if條件語句判斷是否加收服務費
01 Money=int (input ("請輸入消費的金額:")) 02 if Money<1200: 03 Money*=1.1; #消費未滿 1200元,加收10%的服務費 04 print ("需支付的實際金額是 %5.0f 元" %Money)
執行結果如圖4.4所示。

圖4.4
程序解說
◆第1行:輸入消費的金額。
◆第2~3行:由于if條件語句只包括一行程序代碼“Money*=1.1”,因此當消費金額不足1200元時,就會執行第3行的加收服務費運算。
以下程序范例實現讓使用者自行輸入一個體重數值[單位為千克(kg)],接著將輸入體重的字符串類型轉換為整數類型,再利用if語句來判斷體重數值是否大于或等于80,如果判斷結果為真,則輸出“體形過胖,要小心身材變形”。
【程序范例:if_weight.py】使用if條件語句判斷體形是否過胖
01 weight = input ('請輸入體重: ') 02 andy = int (weight) #將輸入體重的字符串類型轉換為整數 03 if andy >= 80: #判斷體重數值是否大于或等于80 04 print ('體形過胖,要小心身材變形')
執行結果如圖4.5所示。

圖4.5
程序解說
◆第1行:輸入體重,并將輸入的字符串賦給weight變量。
◆第2行:將weight變量的字符串通過int()函數轉換為整數,再將該整數值賦給andy變量。
◆第3~4行:單向判斷式if,如果判斷式成立則輸出“體形過胖,要小心身材變形”。
以下程序范例是輸入停車時數,以每小時40元收費,當大于一小時時才開始收費,并輸出停車時數及總費用。
【程序范例:if_fee.py】使用if條件語句判斷停車時數
01 print("停車超過一小時,每小時收費40元") 058第4章? ? 流程控制與選擇結構 02 t=int(input("請輸入停車幾小時: ")) #輸入小時數 03 if t>=1: 04 total=t*40 #計算費用 05 print("停車%d小時,總費用為:%d元" %(t,total)) #程序語句塊是兩行語句,都要縮進

圖4.6
程序解說
◆第2行:輸入停車小時數。
◆第3行:利用if語句,當輸入的數字大于1時,執行第4~5行程序代碼。
4.2.2 if…else條件語句
if…else條件語句的作用是判斷條件式是否成立,是一個使用頻率高且實用的語句。當條件成立(True)時,就執行if里的語句;條件不成立(False,或用0表示)時,則執行else里的語句。如果有多重判斷,可以加上elif語句。if…else條件語句的語法如下。
if 條件表達式: #如果條件成立,就執行這里面的語句 else: #如果條件不成立,就執行這里面的語句
例如,要判斷變量a是否大于或等于變量b時,條件式就可以寫成如下形式。
if a >= b: #如果a大于或等于b,就執行這里面的語句 else: #如果a"不"大于或等于b,就執行這里面的語句
if…else條件式流程如圖4.7所示。

圖4.7
另外,如果if…else條件語句中使用了and或or等邏輯運算符,建議加上括號區分執行順序,從而提高程序的可讀性,例如下面的代碼。
if (a==c) and (a>b): #如果a等于c并且a大于b,就執行這里面的語句 else: #如果上述條件不成立,就執行這里面的語句
例如下面的代碼。
test_score=50 if test_score>=60: print("You Pass!") else: print("You Fail")
執行結果如圖4.8所示。

圖4.8
另外,Python提供了一種更簡潔的if…else條件表達式,格式如下。
X if C else Y
根據條件式返回兩個表達式中的一個,當C為真時返回X,否則返回Y。例如,判斷整數X是奇數或偶數時,原本的程序會寫成如下形式。
if (x % 2)==0: y="偶數" else: y="奇數" print('{0}'.format(y))
而現在只需要簡單的一行程序語句就能達到同樣的目的,如下所示。
print('{0}'.format("偶數" if (X % 2)==0 else "奇數"))
當if判斷式為真時返回“偶數”,否則返回“奇數”。
再來看一個例子,先要求使用者輸入身高數值[單位為厘米(cm)],如果所輸入的身高數值大于或等于180,則輸出“身高不錯”;如果小于180,則輸出“身高不算高”。如果用三元操作數來加以表示,其代碼如下。
height = int(input('請輸入身高:')) print('身高不錯' if height >= 180 else '身高不算高')
執行結果如圖4.9所示。

圖4.9
以下程序范例就是一個使用if…else條件語句的應用范例,可以判斷所輸入的數字是否為5的倍數。
【程序范例:if-else.py】if…else條件語句的應用范例一
01 num = int(input('請輸入一個整數:')) 02 if num%5: 03 print(num, '不是5的倍數') 04 else: 05 print(num, '為5的倍數')
執行結果如圖4.10和圖4.11所示。

圖4.10

圖4.11
程序解說
◆第1行:輸入一個整數,并將該值賦給變量num。
◆第2~5行:利用“num%5”取除以5的余數作為if語句的條件式判斷依據。
以下程序范例就是利用if…else條件語句讓使用者輸入一個整數,并判斷該整數是否為2或3的倍數,并且不為6的倍數。
【程序范例:if-else-1.py】if…else條件語句的應用范例二
01 value=int(input("請任意輸入一個整數:")) #輸入一個整數 02 #判斷是否為2或3的倍數 03 if value%2==0 or value%3==0: 04 if value%6!=0: 05 print("符合條件") 06 else: 07 print("不符合條件") #為6的倍數 08 else: 09 print("不符合條件")
執行結果如圖4.12所示。

圖4.12
程序解說
◆第1行:任意輸入一個整數。
◆第3行:利用if語句判斷是否為2或3的倍數,與第8行的else語句為一組。
◆第4~7行:這是一組if…else語句,用來判斷是否為6的倍數。
4.2.3 if…elif…else條件語句
之前我們使用了if…else條件語句來做判斷,當條件成立時執行if里的語句,反之則執行else里的語句??墒怯袝r候可能想要做多個不同但相關條件的判斷,然后根據判斷結果來執行程序。雖然使用多重if條件語句可以解決多種條件下的不同執行問題,但始終還是不夠精簡,這時elif條件語句就能派上用場了。elif條件語句可以讓程序代碼的可讀性更高。
注意,if后面并不一定要有elif和else,可以只有if,或是if…else,或是if…elif…else這3種情形。格式如下。
if 條件表達式1: #如果條件表達式1成立,就執行這里面的語句 elif 條件表達式2: #如果條件表達式2成立,就執行這里面的語句 else: #如果上面的條件表達式都不成立,就執行這里面的語句
if…elif…else條件語句的流程如圖4.13所示。

圖4.13
用if…elif…else條件語句對分數做成績等級的判斷,其程序代碼如下。
score=9000 if score >= 10000: print('通過游戲的第4關卡') elif score >= 8000: print('通過游戲的第3關卡') elif score >= 6000: print('通過游戲的第2關卡') elif score >= 4000: print('通過游戲的第1關卡') else: print('沒有通過游戲的任何關卡')
執行結果如圖4.14所示。

圖4.14
以下程序范例可以讓消費者輸入消費金額,并根據不同的消費金額打不同的折扣,使用if…elif…else條件語句來輸出最后實際消費的金額。消費金額與折扣的關系如表4.1所示。
表4.1 消費金額與折扣的關系

【程序范例:discount.py】購物折扣
01 cost=?oat(input("請輸入消費總金額:")) 02 if cost>=100000: 03 cost=cost*0.85 #10萬元(包括10萬元)以上打8.5折 04 elif cost>=50000: 05 cost=cost*0.9 #5萬元(包括5萬元)到10萬元打9折 06 else: 07 cost=cost*0.95 #5萬元以下打9.5折 08 print("實際消費總額:%.1f元" %cost)
執行結果如圖4.15所示。

圖4.15
程序解說
◆第1行:輸入消費總金額,變量采用單精度浮點數類型,因為結果會有小數點位數。
◆第2行:if條件判斷語句,如果cost為10萬元(包括10萬元)以上,則打8.5折。
◆第4行:elif條件判斷語句,如果cost為5萬元(包括5萬元)到10萬元,則打9折。
◆第6行:else語句,判斷如果cost小于5萬元,則打9.5折。
下面的程序范例是利用if…elif…else條件語句編寫的一個點餐程序,并介紹如何增加條件表達式的應用范圍。
【程序范例:pos.py】if…elif…else條件語句的應用范例
01 print("目前提供的選擇如下") 02 print(" 0.查詢其他相關的點心資料") 03 print(" 1.吉士漢堡" ) 04 print(" 2.咖喱珍珠堡") 05 print(" 3.六塊麥克雞") 06 print("請選擇您要的點心:" ) 07 Select=int(input()) #輸入點心的編號 08 if Select == 0: #是否選擇第0項? 09 print("請稍等……正在查詢其他相關的點心資料") 10 elif Select == 1: #是否選擇第1項? 11 print("這個點心的單價:%d" %45) 12 elif Select == 2: #是否選擇第2項? 13 print("這個點心的單價:%d" %55) 063從零開始:Python快速入門教程 14 elif Select == 3: #是否選擇第3項? 15 print("這個點心的單價:%d" %65) 16 else: #輸入錯誤的處理 17 print("您可能輸入錯誤,請重新輸入")
執行結果如圖4.16所示。

圖4.16
程序解說
◆第1~6行:顯示可供選擇的相關信息。
◆第8~17行:整個if…elif…else條件語句針對輸入的內容單獨顯示相關信息,其他沒有指定的選項則一律由else語句處理。在這樣的架構下,如果要增加可選擇的項目,只需要再增加一組elif條件表達式即可。
- Learning Selenium Testing Tools with Python
- MySQL數據庫應用與管理 第2版
- PyTorch自然語言處理入門與實戰
- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- C語言程序設計同步訓練與上機指導(第三版)
- Kivy Cookbook
- 自學Python:編程基礎、科學計算及數據分析(第2版)
- Angular應用程序開發指南
- MongoDB Cookbook(Second Edition)
- 分布式架構原理與實踐
- 軟件設計模式(Java版)
- Elasticsearch搜索引擎構建入門與實戰
- 讀故事學編程:Python王國歷險記
- 城市信息模型平臺頂層設計與實踐
- Magento 2 Developer's Guide