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
相关产品推荐
相关产品推荐

