(4) if內又有if

所謂的巢狀式if就是if敘述之中還有其他的if。當第一層的if敘述成立之後,程式就會進入第二層的if繼續判斷,當第二層的if也成立時,就會執行第二層if之中的敘述。

程式:
#單價、數量、折價卷
price=120
amount=50
coupon=True 

#計算總金額
total = price * amount

#總金額大於2000元先打9折, 如果又有折價卷再扣200元.
#(假設折價卷只能在總金額大於2000元時使用)
if total > 2000:
    total = int(total*0.9)  #打9折
    if coupon:
        total -= 200  #扣200元

#顯示應付金額
print(f'{total:,}元')
執行結果:
5,200

以上程式的流程圖如下:

在上的例子中,第一層的if指令先判斷總金額是否大於2000元?若是,程式流程會往右邊走,計算打九折之後的金額;若不是,就向左走離開if指令。如果總金額大於2000元,接著再進行第二層的if指令判斷是否有折價卷?如果有,流程再往右走,將總金額扣除200元;如果沒有,向左走而離開判斷式。程式依據資料的不同在巢狀if內走不同的路徑,最後會離開,並輸出total值

2. 加入else指令

再看以下的例子,稍微擴充了以上的巢狀判斷式:

這個巢狀if的第一個判斷式用來判斷總金額是否大於2000元?條件成立時流程向右走,總金額打九折;當判斷式不成立時向左走,總金額也可以打95折。

自主練習

  1. 某個遊樂場的大人入場門票800元,小孩500元。請輸入大人人數及小孩人數,計算總金額。 如果總金額至少3,000元,門票可打9折,又如果同行小孩至少2人,每位小孩可再扣100元,但如果只有1位小孩同行,可扣50元; 如果總金額不足3,000元,門票可打95折。

Last updated