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

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.mzph.cn/news/185725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NDK代码编译的方式,ndk-build,Cmake,独立工具链分别有什么区别

NDK代码编译的方式有三种&#xff0c;分别是基于Make的ndk-build&#xff0c;CMake&#xff0c;以及独立工具链。它们的区别如下&#xff1a; 基于Make的ndk-build是Android NDK r4引入的一个shell脚本&#xff0c;它使用Android.mk和Application.mk文件来描述编译参数和配置&…

【UE】透视效果

效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Perspective” 打开“M_Perspective”&#xff0c;设置材质域为后期处理 添加三个“SceneTexture”节点&#xff0c;场景纹理ID选项分别设置为“…

【同济大学主办】第七届先进算法与控制工程国际学术会议(ICAACE 2024)

第七届先进算法与控制工程国际学术会议&#xff08;ICAACE 2024&#xff09; 2024 7th International Conference on Advanced Algorithms and Control Engineering 第七届先进算法与控制工程国际学术会议&#xff08;ICAACE 2024&#xff09;定于2024年1月26-28日在中国上…

python中的enumerate函数

enumerate函数是Python内置builtins模块中的一个函数&#xff0c;用于将一个可迭代对象转换为一个索引-元素对的枚举对象&#xff0c;从而方便地同时获得索引和元素&#xff0c;并在循环迭代中使用。 enumerate函数的语法格式为&#xff1a;enumerate(iterable, start0) itera…

软件开发流程:基础源代码与实战详解

一、引言 在当今的信息时代&#xff0c;软件开发已成为推动社会进步和发展的重要力量&#xff0c;从智能手机应用程序到复杂的企业级系统&#xff0c;软件开发在我们的日常生活和工作中发挥着越来越重要的作用。 然而&#xff0c;对于初学者来说&#xff0c;了解软件开发流程…

【设计模式】03:单例模式

单例模式 OVERVIOW 单例模式1.单例模式实现2.饿汉与懒汉&#xff08;1&#xff09;饿汉模式&#xff08;2&#xff09;懒汉模式 3.懒汉线程安全1&#xff08;1&#xff09;引入互斥锁&#xff08;2&#xff09;引入双重检查锁定&#xff08;3&#xff09;引入原子变量 4.懒汉线…

Jmeter接口自动化测试断言之Json断言

json断言可以让我们很快的定位到响应数据中的某一字段&#xff0c;当然前提是响应数据是json格式的&#xff0c;所以如果响应数据为json格式的话&#xff0c;使用json断言还是相当方便的。 还是以之前的接口举例 Url: https://data.cma.cn/weatherGis/web/weather/weatherFcst…

2023/11/30JAVAweb学习

数组json形式 想切换实现类,只需要只在你需要的类上添加 Component 如果在同一层,可以更改扫描范围,但是不推荐这种方法 注入时存在多个同类型bean解决方式

一些好用的12款前端小插件

1. cropper.js Cropper.js 2.0 是一系列用于图像裁剪的 Web 组件。 官网地址&#xff1a;https://fengyuanchen.github.io/cropperjs/v2/zh/ 2. Vditor Vditor是一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得、即时渲染&#xff08;类似 Typora&#xff09;和分…

JavaEE——简单认识CSS

文章目录 一、简单了解什么是 CSS二、CSS 选择器1.标签选择器2.类选择器3.ID 选择器4.后代选择器5.子选择器6.伪类选择器 三、字体属性1.设置字体家族2.设置字体大小3.设置字体粗细4.文字倾斜 四、文本属性1.文本对齐2.文本装饰3.文本缩进4.背景设置 五、圆角矩形六、CSS 盒子模…

【编码艺术:掌握String类函数接口的妙用指南】

【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 1. 为什么要学习string类 1.1 C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c; 但是这些库函数与…

【JavaFX漏扫开发基础】screen类的使用

文章目录 一、screen获取屏幕信息二、查看当前屏幕的分辨率DPI三、scene类和两个小知识一个图形化的结构让界面打开一个网页改变鼠标的图案一、screen获取屏幕信息 package javafx.test;import javafx.application.Application; import

SpringBoot项目发送邮件

&#x1f4d1;前言 本文主要是【SpringBoot】——SpringBoot项目发送邮件的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f3…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21&#xff1a;30 负责人&#xff1a;jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

半同步复制与MHA高可用架构设计

各位道友好&#xff0c;鼠鼠我呀校招刚通过了移动的面试 &#xff0c;但是安排的岗位是偏远县城里面的岗位&#xff0c;各位能给给建议吗&#xff1f;鼠鼠我啊真不想有时候变成销售员去卖产品&#xff01;&#xff01;&#xff01; 半同步复制与MHA高可用架构设计 一、半同步复…

Set.toArray(new String[size]) 和 Set.toArray(new String[0]) 区别

Set.toArray(new String[size]) 和 Set.toArray(new String[0]) 区别 在Java中&#xff0c;Set.toArray(T[] array) 方法用于将集合&#xff08;Set&#xff09;中的元素转换为数组。两种常见的用法是&#xff1a; Set.toArray(new String[size]) Set.toArray(new String[0])…

记录一次docker搭建tomcat容器的网页不能访问的问题

tomcat Tomcat是Apache软件基金会的Jakarta项目中的一个重要子项目&#xff0c;是一个Web服务器&#xff0c;也是Java应用服务器&#xff0c;是开源免费的软件。它是一个兼容Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;的Web服务器&#xff0c;可以作为独立的W…

故障排查:rpm安装报错事务锁定(can‘t create transaction lock on /var/lib/rpm/.rpm.lock)

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 故障详情故障原因解决办法 故障详情 自己编写spec文件&#xff0c;制…

Redis链表使用

Redis是优秀的非关系型数据库&#xff0c;源码中的链表是很经典&#xff0c;将其提取使用 /* adlist.c - A generic doubly linked list implementation** Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com>* All rights reserved.** Redistri…

解密Kafka主题的分区策略:提升实时数据处理的关键

目录 一、Kafka主题的分区策略概述1.1 什么是Kafka主题的分区策略&#xff1f;1.2 为什么分区策略重要&#xff1f; 二、Kafka默认分区策略2.1 Round-Robin分区策略 三、自定义分区策略3.1 编写自定义分区器3.2 最佳实践&#xff1a;如何选择分区策略 四、分区策略的性能考量4.…