官术网_书友最值得收藏!

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條件表達式即可。

主站蜘蛛池模板: 安宁市| 贵德县| 吕梁市| 碌曲县| 友谊县| 陆良县| 栾城县| 云梦县| 高雄县| 余庆县| 科尔| 许昌县| 乐山市| 上蔡县| 勐海县| 页游| 石景山区| 抚顺县| 安西县| 会泽县| 贵阳市| 进贤县| 大关县| 龙江县| 定南县| 屏山县| 县级市| 曲松县| 三门县| 永胜县| 邯郸县| 泽普县| 牙克石市| 安龙县| 云和县| 墨竹工卡县| 阜新| 广饶县| 会同县| 农安县| 靖江市|