根据身高体重计算某个人的BMI值--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例3:根据身高体重计算某个人的BMI值

BMI又称为身体质量指数,它是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。我国制定的BMI的分类标准如表1所示。

表1  BMI的分类

BMI

分类

<18.5

过轻

18.5 <= BMI <= 23.9

正常

24 <= BMI <= 27

过重

28 <= BMI <= 32

肥胖

>32

非常肥胖

BMI计算公式如下所示:

身体质量指数(BMI= 体重(kg)÷身高2m2

本案例要求编写程序,根据用户输入的身高和体重计算BMI值,并找到对应的分类。

实例目标

  1. 掌握if-elif-else语句的使用

实例分析

在本实例中计算某个人的BMI值需要使用input()函数接收输入的数据,因为体重、身高数据常使用浮点类型进行表示,所以需要将接收的数据转换为浮点类型,接着根据BMI值计算公式对输入的体重、身高数据进行计算,在上表中BMI值对应着不同的分类标准,因此可以使用if-elif-else语句判断BMI值的分类标准。

代码实现

height = float(input('请输入您的身高(m):'))

weight = float(input('请输入您的体重(kg):'))

BMI = weight / (height * height)

print('您的BMI值为%.2f' % BMI)

if BMI < 18.5:

    print('体重过轻')

elif 18.5 <= BMI <= 23.9:

    print('体重正常')

elif 24 <= BMI <= 27:

    print('体重过重')

elif 28 <= BMI <= 32:

    print('体重肥胖')

else:

    print('非常肥胖')

以上代码首先使用input()函数来接收用户输入的身高、体重数据,接着将用户的输入的数据通过float()转成浮点数数据,并将结果赋值给变量height与weight,然后根据BMI值计算公式计算结果并将计算的结果赋值给变量BMI,使用print()函数将变量BMI值进行输出,再使用if-elif-else语句判断BMI值所属分类,最后使用print()函数将BMI值所属分类输出。

代码测试

运行代码,控制台输出结果如下:

请输入您的身高(m):1.75

请输入您的体重(kg):65

您的BMI值为21.22

体重正常

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以使用Python的第三方库PyQt5来生成一个平面的仿真人体。PyQt5是一个流行的Python GUI工具包,它提供了丰富的图形界面组件和工具,可以用于创建各种GUI应用程序,包括2D和3D图形。 以下是Python代码示例,可以根据输入身高体重计算BMI并生成一个平面的仿真人体: ```python import sys from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsEllipseItem, \ QGraphicsRectItem, QGraphicsTextItem, QGraphicsItemGroup from PyQt5.QtGui import QBrush, QColor, QFont class BodyView(QGraphicsView): def __init__(self, parent=None): super().__init__(parent) self.scene = QGraphicsScene(self) self.setScene(self.scene) self.draw_body() def draw_body(self): # 输入身高体重 height = float(input("请输入身高(米):")) weight = float(input("请输入体重(千克):")) # 计算BMI bmi = weight / (height ** 2) # 计算人体各部位的尺寸 head_width = 0.3 * height head_height = 0.2 * height neck_width = 0.2 * height torso_width = 0.4 * height torso_height = 0.6 * height arm_width = 0.15 * height arm_height = 0.5 * height leg_width = 0.2 * height leg_height = 0.6 * height # 创建各部位的图形项 head = QGraphicsEllipseItem(-head_width / 2, -head_height / 2, head_width, head_height) neck = QGraphicsRectItem(-neck_width / 2, head_height / 2, neck_width, head_height / 4) torso = QGraphicsRectItem(-torso_width / 2, head_height * 3 / 4, torso_width, torso_height) left_arm = QGraphicsRectItem(-torso_width / 2 - arm_width, head_height * 3 / 4 + arm_height / 4, arm_width, arm_height) right_arm = QGraphicsRectItem(torso_width / 2, head_height * 3 / 4 + arm_height / 4, arm_width, arm_height) left_leg = QGraphicsRectItem(-leg_width / 2, head_height * 3 / 4 + torso_height, leg_width, leg_height) right_leg = QGraphicsRectItem(leg_width / 2, head_height * 3 / 4 + torso_height, leg_width, leg_height) # 将各部位的图形项组合为一个整体 body = QGraphicsItemGroup() body.addToGroup(head) body.addToGroup(neck) body.addToGroup(torso) body.addToGroup(left_arm) body.addToGroup(right_arm) body.addToGroup(left_leg) body.addToGroup(right_leg) # 根据BMI填充颜色 if bmi < 18.5: brush = QBrush(QColor("blue")) elif bmi < 24: brush = QBrush(QColor("green")) elif bmi < 28: brush = QBrush(QColor("orange")) else: brush = QBrush(QColor("red")) body.setBrush(brush) # 设置整体位置和大小 body.setPos(self.width() / 2, self.height() / 2) body.setScale(2) # 显示BMI text = QGraphicsTextItem("BMI = {:.2f}".format(bmi)) text.setFont(QFont("Arial", 16)) text.setPos(self.width() / 2, self.height() / 2 + head_height / 2 + 20) self.scene.addItem(text) if __name__ == '__main__': app = QApplication(sys.argv) view = BodyView() view.show() sys.exit(app.exec_()) ``` 运行代码后,会让用户输入身高体重,然后根据计算出的BMI来填充相应的颜色,最后显示BMI。在PyQt5中,我们首先创建了一个QGraphicsView对象,并在其中创建一个QGraphicsScene对象。然后,我们使用QGraphicsEllipseItem、QGraphicsRectItem和QGraphicsTextItem等图形项来创建各部位的图形,并将它们组合为一个整体。最后,我们将整体添加到QGraphicsScene对象中,并在QGraphicsView对象中显示它。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaozhima-dun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值