# Python : if elif else ###### tags: `python` `九年級` + 一般而言,電腦執行程式碼時為循序結構,但有些時候程式設計師需要依照情境來設計==分支結構==的執行順序 ### 條件分支結構圖 ![](https://i.imgur.com/TofV4g2.jpg) ### 範例一:if基礎結構 >假設今天我們要設一個程式來判斷你分數是否及格: > >>1.如果分數大於等於60,我們印出`你及格了` >>2.分數低於60,我們印出`你不及格` >>3.分數等於60,印出`你剛好及格` >> :::info ```python= score=60 if (score>60): print("你及格了") elif(score<60): print("你不及格") else : print("你剛好及格") ``` ::: >輸出: >你剛好及格 ```python= if (score>60): print("你及格了") ``` + `if`後面括號`()`內需放`布林值`來判定是否繼續執行下行==縮排==的陳述式。 + 因為`score`不滿足條件`score>60`,所以沒有執行`print("你及格了")` ```python= elif(score<60): print("你不及格") ``` + `elif`為接續前面`if`判斷失敗後,繼續進行條件判斷 + `elif`後面括號`()`內需放`布林值`來判定是否繼續執行下行==縮排==的陳述式。 + 因為`score`不滿足條件`score<60`,所以沒有執行`print("你不及格")` ```python= else: print("你剛好及格") ``` + else 為接續前面elif或者if判斷失敗後,直接執行else中的陳述式 ### 範例二: if elif else間的組合 ```cpp= a=9 b=15 c=11 #a=9 , b=15 ,c=11 if (a==9): print("a==9是對的") #輸出結果時,此行有被執行 elif(b==15): print("b==15是對的") #---------------------- if (c==1): print("c==1是對的") else: print("c不等於1") #輸出結果時,此行有被執行 #------------------------ if (a==10): print("a==10 為真") #---------------------- if (b==20): print("b==20 為真") #-------------------------- if (c==11): print("c==11 為真") #輸出結果時,此行有被執行 ``` >輸出結果: > a\==9是對的 > c不等於1 > c\==11 為真 ### 練習1: BMI判斷 + 練習設計一個BMI判斷函式 + 輸入為BMI(身高,體重),身高單位為公分,體重單位為公斤 ```python= def BMI(h ,w ): #建立一個單位為公尺的身高變數newh,為公分要除100 newh=h/100 #BMI計算: (體重/身高平方) bmi = w / (newh*newh) print("你的BMI是: ",bmi) ''' if(...): 大於23,印出過重... elif(...): 小於等於23,大於等於18,印出適中... else: 小於18,印出太輕... ''' print("---------------------")#印出一行'-'來做不同次呼叫本函數的區隔 #呼叫BMI函式 BMI(170,100) BMI(200,10) BMI(170,60) ``` ### 解答1 ```python= def BMI(h ,w ): #建立一個單位為公尺的身高變數newh,為公分要除100 newh=h/100 #BMI計算: (體重/身高平方) bmi = w / (newh*newh) print("你的BMI是: ",bmi) if(bmi>23): print("你的bmi太高") elif(bmi>=18 and bmi<=23): print("你的bmi適中") else: print("你的bmi太輕") print("---------------------")#印出一行'-'來做不同次呼叫本函數的區隔 #呼叫BMI函式 BMI(170,100) BMI(200,10) BMI(170,60) ``` ### 練習2: 判斷是否為三角形 + 設計函式istriangle(a,b,c) + 判斷給予的三邊a,b,c是否能形成三角形, :::info **提示** + 透過三邊長三角形 + 概念:兩邊加起來要大於第三邊 + 海龍公式(Heron's formula): + 用三角形三邊邊長來算出面積 + 假設三角形三邊邊長為 `a`, `b`, `c`,令 `s` = $\frac{(a+b+c)}{2}$ 則 三角形面積 = $\sqrt{s(s-a)(s-b)(s-c)}$ ::: ```python= def istriangle(a,b,c): #a+b>c,a+c>b,b+c>a 來判別 if (...): #都滿足便是三角形,所以印出"是三角形" #透過海龍公式印出三角形面積 ... else: ... #其他狀況,印出不能形成三角形 istriangle(1,2,3) istriangle(3,2,3) istriangle(4,5,7) ``` ### 解答2 ```python= def istriangle(a,b,c): s=(a+b+c)/2 S1= (s*(s-a)*(s-b)*(s-c)) ** (1/2) #a+b>c,a+c>b,b+c>a 來判別 if (a+b>c and a+c>b and b+c>a): print("是三角形") print("三角形面積是: ",S1) else: print("不是三角形") #其他狀況,印出不能形成三角形 print("--------------------") istriangle(1,2,3) istriangle(3,2,3) istriangle(4,5,3) ``` ### 練習題3 : 加分判別 >設計一個加分函數,平均90以上各科加5分 >設計一個加分函數,平均60以上各科加8分 >設計一個加分函數,不到60各科加12分 ```python= def bonusPoint(chi,eng,math): new_chi=0 new_eng=0 new_math=0 if() ... elif() ... ... else ... return new_chi ,new_eng ,new_math x,y,z=bonusPoint(90,50,33) print("新分數",x,y,z) print("--------------------") x,y,z=bonusPoint(90,80,73) print("新分數",x,y,z) print("--------------------") x,y,z=bonusPoint(60,50,13) print("新分數",x,y,z) print("--------------------") ```