Python快速实现BMI(身体质量指数)计算器(窗口界面形式)

news/2024/11/8 23:08:39/

BMI是身体质量指数(Body Mass Index)的缩写,是一种衡量人体肥胖程度的指标。它是根据人的身高和体重计算得出的,公式为:

BMI = 体重(kg)/ 身高^2(m)

其中,体重以千克为单位,身高以米为单位。根据计算结果,可以将人的体型分为偏瘦、正常、超重和肥胖四个等级。

BMI指数的范围和对应的等级如下:

  • BMI < 18.5,偏瘦
  • 18.5 <= BMI < 24.9,正常
  • 24.9 <= BMI < 29.9,超重
  • BMI >= 30,肥胖
     

 完整源码如下:

import tkinter as tk
from tkinter import messageboxdef calculate_bmi():try:height = float(height_entry.get()) / 100  # 转换为米weight = float(weight_entry.get())bmi = weight / (height * height)bmi = round(bmi, 1)  # 保留一位小数if bmi < 18.5:category = "偏瘦"range_info = "偏瘦范围: < 18.5"elif bmi < 24.9:category = "正常"range_info = "正常范围: 18.5 - 24.9"elif bmi < 29.9:category = "超重"range_info = "超重范围: 25 - 29.9"else:category = "肥胖"range_info = "肥胖范围: >= 30"result_label.config(text=f"BMI指数: {bmi}")category_label.config(text=f"等级: {category}")range_label.config(text=range_info)except ValueError:messagebox.showerror("错误", "请输入有效的身高和体重!")# 创建窗口
window = tk.Tk()
window.title("BMI指数计算")
window.geometry("600x400")# 创建标签和输入框
height_label = tk.Label(window, text="身高(cm):", font=("Arial", 14))
height_label.pack()
height_entry = tk.Entry(window, font=("Arial", 14))
height_entry.pack()weight_label = tk.Label(window, text="体重(kg):", font=("Arial", 14))
weight_label.pack()
weight_entry = tk.Entry(window, font=("Arial", 14))
weight_entry.pack()# 创建计算按钮
calculate_button = tk.Button(window, text="计算", command=calculate_bmi, font=("Arial", 14))
calculate_button.pack()# 创建结果标签
result_label = tk.Label(window, text="BMI指数: ", font=("Arial", 16, "bold"))
result_label.pack()category_label = tk.Label(window, text="等级: ", font=("Arial", 16, "bold"))
category_label.pack()range_label = tk.Label(window, text="", font=("Arial", 14))
range_label.pack()# 运行窗口
window.mainloop()

运行结果如下,身高已在计算过程中转换为米,此处是为了更方便地输入:


http://www.ppmy.cn/news/1255039.html

相关文章

【算法】直接插入排序

目录 1. 说明2. 举个例子3. java代码示例4. java示例截图 1. 说明 1.直接插入排序的方式和打牌一样&#xff0c;刚开始数组为空 2.拿到一个数字后从左到右将它与数组中的每一个数字进行比较&#xff0c;然后插入合适的位置 3.到最后&#xff0c;数组按照既定的顺序排序好 2. 举…

【SpringMVC】Spring Web MVC入门(一)

文章目录 前言什么是Spring Web MVC&#xff1f;什么是MVC什么是Spring MVC&#xff1f; Spring Boot 和 Spring MVC 的区别什么是Spring Boot&#xff1f;关系和区别 Spring MVC 学习注解介绍1. SpringBootApplication2. RestController3. RequestMapping3.1 RequestMapping 使…

javascript的Proxy

1. 什么是Proxy Proxy是ES6中新增的一个特性&#xff0c;它可以拦截对象的操作&#xff0c;提供了一个中间层来控制对目标对象的访问。简单来说&#xff0c;它可以对对象进行代理&#xff0c;从而实现对对象的监控、修改、过滤等操作。 2. 为什么出现Proxy 在JavaScript中&a…

Session 与 JWT 的对决:谁是身份验证的王者? (下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

深入理解网络非阻塞 I/O:NIO

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

【Matlab】如何快速入门一项新技能-以Matlab/Simulink入门为例

目录 1. 引言 2. 背景 3. 快速学习并完成开发 3.1 了解需求&#xff0c;知道要干什么 3.2 了解Matlab/Simulink基本功能 第一步&#xff0c;查看Matlab的中文网站中文网站https://www.ilovematlab.cn/resources/对Matlab/Simulink有了一个初步认识。 3.3 实现一个最简单…

c语言-结构体

文章目录 1. 结构体类型的声明2 . 结构体变量的创建和初始化(1)结构体变量的创建和初始化(2)结构的特殊声明&#xff08;3&#xff09;结构的自引用&#xff08;4&#xff09;typedef和结构体 3 . 结构成员访问操作符4. 结构体传参5. 结构体内存对齐&#xff08;1&#xff09;对…

智能优化算法应用:基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海洋捕食者算法4.实验参数设定5.算法结果…