Solution:
方法一:"Python語言程序設計"(中國大學MOOC平台)的答案
分析:對比兩種指標,將共性(相同的區間)和異性(不同的區間)細分。這樣兩種指標的判斷條件(不等式)會一致,從而所分的每個區間都只用一條判斷語句即可處理,同時將處理的結果一次性賦值給兩個變量
方法二:本人的答案
1 def gj(bmi): 2 if bmi<18.5: 3 a = "偏瘦" 4 elif 18.5<=bmi<25: 5 a = "正常" 6 elif 25<=bmi<30: 7 a = "偏胖" 8 else: 9 a = "肥胖" 10 return a 11 def gn(bmi): 12 if bmi<18.5: 13 b = "偏瘦" 14 elif 18.5<=bmi<24: 15 b = "正常" 16 elif 24<=bmi<28: 17 b = "偏胖" 18 else: 19 b = "肥胖" 20 return b 21 def main(): 22 height, weight = eval(input()) 23 bmi= round(weight/(height**2),2) 24 c = gj(bmi) 25 d = gn(bmi) 26 print("BMI數值為:{}".format(bmi)) 27 print("BMI指標為:國際'{}',國內'{}'".format(c,d)) 28 main()
此方法沒有將兩種指標不同的區間加以細分,原原本本按照題目表格的判斷條件(不等式)進行討論。此題使用自定義函數要注意以下幾點:
(1)因為“國際”函數:gj()和“國內”函數:gn(),都要用到bmi,所以兩函數的參數都必須設為bmi。此題這兩個函數的獨立運行,互不影響,即沒有信息流的傳遞
(2)主函數中,行22-23也可寫在最開頭,但為了規范,建議寫進主函數中。行24-25的c和d可以省略,將行27、28的c和d改為gj(bmi)和gn(bmi)即可