鱼C论坛

 找回密码
 立即注册
查看: 21|回复: 1

[作品展示] MBI计算器

[复制链接]
发表于 2026-8-28 20:15:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ShireyFen 于 2026-8-28 20:19 编辑
  1. from colorama import Fore, Style, init
  2. import  time
  3. init(autoreset=True)
  4. #自定义函数-引导用户输入正确的数据(带错误处理)
  5. def inputdate(date):
  6.     while True: #循环至转换成功为止
  7.         #捕捉异常
  8.         try:
  9.             num = float(input(date))
  10.             if num <= 0:
  11.                 print(Fore.RED+"不能为零或小于零,请重新输入")
  12.                 continue
  13.             print(Fore.GREEN+"成功输入,正在等待")
  14.             return num
  15.         except ValueError:
  16.             print(Fore.RED+"输入错误,请重新输入(请输入数字)")
  17. #自定义函数-分类用户的MBI类型(定义BMI评估函数)
  18. def judge_the_type(outcome):
  19.     bmi_low = 18.5
  20.     bmi_high = 23.9
  21.     #初始化数据
  22.     judge_outcome = {
  23.         "judge_type" :"", #评估结果
  24.         "risk":0.0, #危险度
  25.         "diff":0.00, #相差
  26.         "is_normal":False
  27.     }
  28.     #区间定义:(上限,下限,分类,危险度)
  29.     criterion = [
  30.         (0, 18.5, "体重偏瘦,建议加强营养", 0.2),
  31.         (18.5, 23.9, "体重正常", 0),      # 注意上限包含
  32.         (23.9, 25, "体重偏胖(超重),注意饮食和运动", 0.5),
  33.         (25, 30, "肥胖初期,请尽快控制", 1),
  34.         (30, 35, "一级肥胖,建议咨询医生", 2),
  35.         (35, 40, "二级肥胖", 3),
  36.         (40, float('inf'), "三级肥胖", 6)
  37.         ]
  38.     for low,high,judge_type,risk in criterion: #for循环依次处理
  39.         if low<=outcome<=high:
  40.             judge_outcome["judge_type"] = judge_type  #导入分类
  41.             judge_outcome["risk"] = risk #导入危险度
  42.             if 18.5<=outcome<=23.9:
  43.                 judge_outcome["is_normal"] = True #定义健康区间由于后续
  44.             if outcome<18.5:
  45.                 judge_outcome["diff"] = bmi_low-outcome #导入相差
  46.             elif outcome>23.9:
  47.                 judge_outcome["diff"] = outcome-bmi_high #导入相差
  48.             break #找到区间退出
  49.     return judge_outcome
  50. #引用函数收集数据
  51. User_hight=inputdate("请输入身高(单位:m):")
  52. User_weight=inputdate("请输入你的体重(单位:kg):")
  53. #计算
  54. User_BMI=User_weight/User_hight**2
  55. #定义结果
  56. judge_outcome= judge_the_type(User_BMI)
  57. print(Fore.YELLOW+"数据收集完成,正在计算。。。")
  58. time.sleep(2)
  59. print(Fore.BLUE+"\n正在输出结果")
  60. print(Fore.BLACK+"***********************************************")
  61. time.sleep(4)
  62. #输出
  63. print(Fore.GREEN+f"你的BMI值为{User_BMI}") #输出bmi值
  64. print(judge_outcome["judge_type"]) #输出评估结果
  65. if judge_outcome["is_normal"]!=True :   #健康区间不输出以下
  66.     time.sleep(1)
  67.     print(Fore.RED+f"危险度{judge_outcome["risk"]}")
  68. if  judge_outcome["diff"] != 0:#危险度为零不输出以下
  69.     if User_BMI<18.5:
  70.         time.sleep(1)
  71.         print(Fore.YELLOW+f"你与MBI正常范围下限相差{judge_outcome["diff"]}")  #输出相差
  72.     else:
  73.         time.sleep(1)
  74.         print(Fore.YELLOW+f'你与MBI正常范围上限相差{judge_outcome["diff"]}')  #输出相差
  75. time.sleep(4)
  76. print(Fore.GREEN+"已显示所有结果\n程序已结束\n数据依照MBI国际标准") #结束
复制代码
我也是终于完成完善我的程序了

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
小甲鱼的二师兄 + 2 + 2 + 2 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-8-28 20:15:21 | 显示全部楼层
恭喜鱼油完成自己的程序!666

不过图片是本地路径(file:///...),论坛上其他鱼油是看不到的,建议上传到论坛附件或图床哦。

你写的应该是 BMI计算器 吧?如果是的话,核心公式就是:

  1. BMI = 体重(kg) / (身高(m) ** 2)
复制代码


给程序加几个小功能会更完善:

  • 输入校验:身高体重必须大于0,防止误输入。
  • 单位换算:支持厘米/米、斤/公斤自动转换。
  • 结果分类:根据BMI值给出偏瘦、正常、偏胖等提示。


继续加油,期待你分享更多作品!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-9-18 19:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表