Python BMI计算器性别校验逻辑异常问题排查
BMI计算程序问题修复
核心问题
代码里的性别判断逻辑错误:你将用户输入转成小写enter_gender.lower()后,却去匹配大小写混合的("Male", "Female"),不管用户输入Male/Female还是小写的male/female,转小写后的字符串都不在这个元组里,所以每次都会执行quit(),直接退出程序。
修复后的代码
enter_gender = input("please enter the gender Male / Female: ") # 转小写后匹配小写选项,避免大小写输入差异问题 if enter_gender.lower() not in ("male", "female"): quit() user_weight = float(input("please enter your weight: ")) user_height = float(input("please enter your height in centimeters: ")) / 100 square_height = user_height ** 2 # 用幂运算写法更简洁 BMI = user_weight / square_height # 用浮点除法保留精度,替代整数除法 print(f"your current BMI is {BMI:.1f}") # 保留一位小数更直观 if BMI < 18.5: # 修正为通用BMI健康阈值 print("Your BMI is below the normal range") elif BMI < 25: print("You are Healthy") elif BMI <= 30: print("You are overweight") else: print("You are obese") # 补充超出30的情况判断
额外优化说明
- 用
**幂运算替代重复乘法,代码更简洁 - 替换
//整数除法为/浮点除法,避免BMI计算精度丢失 - 修正BMI判断阈值为通用健康标准(原12的阈值不符合常规标准)
- 修复打印语句的语法错误:比如
Your are改为You are,移除多余的print关键字 - 补充了BMI超过30的肥胖情况判断
内容的提问来源于stack exchange,提问作者Joseph Ninan
相关产品推荐
相关产品推荐

