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

Python自定义computepay函数报错修复:salary未定义/无法相乘

修正你的Python工资计算函数

嘿,作为编程新手遇到这种变量作用域和类型转换的问题太正常了,我来帮你把代码改对,而且完全保留你想要的def定义形式:

错误原因解析

  • 变量作用域问题:你在computepay函数内部定义的salary是局部变量,函数外部的代码根本访问不到它,所以会报“salary未定义”的错误。
  • 类型转换错误:RatePerHour是从input()获取的字符串,你写的float(RatePerHour*1.5)其实是先让字符串和数字做乘法,这在Python里是不允许的,会触发“无法执行乘法操作”的错误。

修正后的代码

def computepay(Hours, RatePerHour):
    if Hours - 40 < 0:
        salary = Hours * RatePerHour
    else:
        # 先算正常工时工资,再算加班时长的1.5倍工资
        salary = 40.0 * RatePerHour + (Hours - 40.0) * RatePerHour * 1.5
    # 把计算好的工资返回给调用者
    return salary

# 提前把输入转成float,避免函数里重复转换,也解决类型错误
Hours = float(input("Hours:\n"))
RatePerHour = float(input("RatePerHour:\n"))

# 调用函数并接收返回的工资结果
salary = computepay(Hours, RatePerHour)

print("Salary:")
print(salary)

关键修改点

  • 给computepay函数加上return salary,让函数能把计算结果传递出去。
  • 在获取用户输入后直接转成float,这样函数里不用重复转类型,也避免了字符串和数字的乘法错误。
  • 在函数外部用salary变量接收函数的返回值,这样就能正常打印了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:20