【Python案例】BMI 健康自测卡 ------ 变量综合应用

案例需求
请做一张"BMI 健康自测卡",实现如下要求:
- 定义变量
weight保存体重 55.5(千克)、变量height保存身高 1.65(米); - 按公式
BMI = 体重 ÷ 身高的平方计算 BMI 的值; - 计算结果保留一位小数;
- 最后逐行输出这张自测卡:第一行输出"BMI = 数值",第二行输出参考区间说明;
- 另外定义一个变量
remark = None用于填写"备注"信息,在最后一行打印出来。
案例实现
第 1 步 :准备数据。定义变量 weight 和 height 分别用来保存体重和身高,初始值为 55.5 和 1.65。
体重和身高都是小数,所以都写成浮点数。
python
weight = 55.5 # 体重(千克)
height = 1.65 # 身高(米)
第 2 步 :根据公式 BMI = 体重 ÷ 身高的平方 计算 BMI 的值。** 是乘方运算符,height ** 2 就表示身高乘身高。
python
bmi = weight / (height ** 2)
第 3 步 :保留一位小数。round(数值, 位数) 第二个参数是保留的位数。
python
bmi = round(bmi, 1)
第 4 步 :输出卡片。用 print() 把文字和变量一起打印出来。
python
print("BMI =", bmi)
print("参考区间:低于 18.5 偏瘦,18.5 到 23.9 正常,24 及以上偏胖")
remark = None
print("备注:", remark)
完整代码:
python
weight = 55.5 # 体重(千克)
height = 1.65 # 身高(米)
bmi = weight / (height ** 2)
bmi = round(bmi, 1)
print("BMI =", bmi)
print("参考区间:低于 18.5 偏瘦,18.5 到 23.9 正常,24 及以上偏胖")
remark = None
print("备注:", remark)
运行结果:
BMI = 20.4
参考区间:低于 18.5 偏瘦,18.5 到 23.9 正常,24 及以上偏胖
备注: None
案例解析
- 变量的定义与赋值 :
weight = 55.5、height = 1.65、bmi = weight / (height ** 2)、remark = None,定义变量时不需要提前声明类型,直接写出值就行;几个变量各司其职,名字也取得清楚。 - 浮点数的运算 :
/执行的是除法运算,**是乘方运算。height ** 2就是身高乘身高,等价于height * height。 round()保留小数 :计算出来的 BMI 是20.3857...,利用round(bmi, 1)保留小数点后 1 位,数值就变成了20.4。注意,要先算完再保留小数;中途就四舍五入,结果会不准。print()打印多个值 :print("BMI =", bmi)里的两部分用逗号隔开,打印时中间会自动加一个空格。None的使用 :remark暂时没有备注内容,使用None占位,等以后有内容再赋值。
相关练习
一、题目
1.(选择题) 已知 BMI = 体重 / 身高 ** 2,当 weight = 50、height = 2 时,BMI 的值是( )。
- A.
12.5 - B.
25 - C.
100 - D.
4
2.(填空题) 要把 bmi 保留一位小数,应写成 round(bmi, ______)。
3.(判断题) 如果直接用字符串 "55.5" 和数字 2 做除法,程序会报错。( )
4.(简答题) 已知 s = "60.5"(字符串),请写出一行代码,把它转成浮点数并保留两位小数输出。
二、参考答案与解析
1. 答案:A
解析:先算 height ** 2 = 2 ** 2 = 4,再算 50 / 4 = 12.5。注意乘方的优先级高于除法,要先算乘方再算除法。
2. 答案:1
解析:round() 的第二个参数表示保留几位小数,保留一位就填 1。
3. 答案:正确(√)
解析:字符串不能和数字直接做除法,"55.5" / 2 会抛出类型错误(TypeError)。要让 "55.5" 参与数学计算,必须先用 float("55.5") 把它转成浮点数。
4. 答案:
python
print(round(float(s), 2))
解析:先用
float(s)把字符串转成浮点数,再用round(..., 2)保留两位小数,最后打印,结果是60.5。round()只管数值、不会自动补零;想显示成60.50,得改用格式化写法"{:.2f}".format(...)。
声明:本文部分内容由人工智能辅助生成。