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)即可