You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数报错‘name 'male' is not defined’:理想体重计算程序求助

解决你的Python理想体重计算函数报错问题

首先来说你遇到的name 'male' is not defined错误——这大概率是因为你调用函数时尝试传入了类似BMI(180, male)的参数,但全局环境里根本没定义male这个变量。而且更关键的是,你的函数其实完全不需要传入参数,因为内部已经通过input()自己获取身高和性别了,这就导致参数不仅没用,还容易引发调用错误。

再仔细看你的代码,还有几个需要修正的地方:

  • 单位问题:如果输入的是厘米(比如180),直接平方计算会得到离谱的结果(180²×22=712800),必须先转换成米再计算。
  • 冗余参数:函数声明了h和g参数,但内部又重新赋值,完全浪费了参数的作用,还容易混淆。
  • 异常处理:如果用户输入的性别不是male或female,函数会返回None,没有任何提示。

下面是修正后的完整代码,我会逐一说明改动点:

def calculate_ideal_weight():
    # 获取身高并转换为米(输入单位为厘米)
    height_cm = float(input("请输入你的身高(厘米):\n"))
    height_m = height_cm / 100
    
    # 处理性别输入,兼容大小写和前后空格
    gender = input("请输入你的性别('male'或'female'):\n").strip().lower()
    
    # 根据性别计算理想体重
    if gender == "male":
        ideal_weight = 22 * (height_m ** 2)
    elif gender == "female":
        ideal_weight = 21 * (height_m ** 2)
    else:
        print("⚠️ 输入的性别格式不正确,请输入'male'或'female'")
        return None
    
    # 保留两位小数,让结果更直观
    return round(ideal_weight, 2)

# 调用函数并输出结果
result = calculate_ideal_weight()
if result:
    print(f"✅ 你的理想体重是:{result} 公斤")

关键改动说明:

  1. 移除冗余参数:函数不再需要传入参数,直接内部获取输入,避免调用时的参数错误。
  2. 单位转换:把输入的厘米身高转换成米,确保计算结果符合实际(比如180cm男性的理想体重是71.28公斤)。
  3. 输入容错:用strip().lower()处理性别输入,哪怕用户输入Male、female这类格式也能正确识别。
  4. 异常提示:添加了else分支,当性别输入错误时给出明确提示,避免返回无意义的None。
  5. 结果优化:用round()保留两位小数,输出的体重值更符合日常使用习惯。

现在你直接运行这段代码,按照提示输入身高和性别,就能得到正确的理想体重结果啦。

内容的提问来源于stack exchange,提问作者user14720481

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:20:16