python实例五:身体质量指数BMI计算
一、问题分析
BMI计算公式:
BMI = 体重(kg) / 身高(m)^2
国际与国内标准对比
分类 | 国际标准 | 国内标准 |
---|---|---|
偏瘦 | <18.5 | <18.5 |
正常 | 18.5-25 | 18.5-24 |
偏胖 | 25-30 | 24-28 |
肥胖 | ≥30 | ≥28 |
二、实现要点
输入处理
# 同时接收身高体重输入(示例输入:1.75,72)
height, weight = eval(input("请输入身高(m)和体重(kg),用逗号分隔:"))
关键说明:
eval()
函数将输入字符串转换为Python表达式- 输入格式必须为
数值1,数值2
形式 - 自动解包赋值给height和weight变量
三、代码实现
国际标准判断
# 计算BMI值
bmi = weight / pow(height, 2)# 国际标准判断
if bmi < 18.5:inter = "偏瘦"
elif 18.5 <= bmi < 25:inter = "正常"
elif 25 <= bmi < 30:inter = "偏胖"
else:inter = "肥胖"
国内标准判断
# 国内标准判断
if bmi < 18.5:dom = "偏瘦"
elif 18.5 <= bmi < 24:dom = "正常"
elif 24 <= bmi < 28:dom = "偏胖"
else:dom = "肥胖"
完整代码
# 获取输入
h, w = eval(input("请输入身高(m)和体重(kg),用逗号分隔:"))
bmi = w / (h**2)# 国际标准判断
if bmi < 18.5:inter = "偏瘦"
elif 18.5 <= bmi < 25:inter = "正常"
elif 25 <= bmi < 30:inter = "偏胖"
else:inter = "肥胖"# 国内标准判断
if bmi < 18.5:dom = "偏瘦"
elif 18.5 <= bmi < 24:dom = "正常"
elif 24 <= bmi < 28:dom = "偏胖"
else:dom = "肥胖"# 输出结果
print(f"\n国际标准: {inter}\n国内标准: {dom}")
四、举一反三
多分支条件注意事项
- 条件覆盖顺序:必须从严格到宽松排列条件
- 边界值处理:使用
<=
和<
明确包含/排除边界 - 条件互斥性:确保不同分支条件不会重叠
代码阅读技巧
def calculate_bmi():# 重点关注if-elif结构划分的逻辑区块if condition1:# 分支1处理逻辑elif condition2:# 分支2处理逻辑else:# 默认处理逻辑
调试建议:
- 使用边界值测试(如18.5,24,25,28等)
- 打印中间变量值验证计算过程
- 添加异常处理应对非法输入
关键学习点:通过本案例掌握多条件分支结构的实现技巧,理解不同标准体系的实现差异,培养处理复杂条件判断的能力。