Python编写computepay薪资计算函数时出现bad input错误求助
问题排查
你代码存在3个核心错误,和变量定义、函数声明本身无关,是逻辑实现和return语句的问题:
- 薪资计算规则错误:超过40小时的场景下,你仅计算了1.5倍费率,没有乘以超出的工时,正确计算逻辑为:
总薪资 = 40*基础费率 + (总工时-40)*1.5*基础费率 - return语句配置错误:当前return仅放在else分支下,当工时超过40时函数无返回值,会得到None;同时你返回的是字符串
'p',而不是存储计算结果的变量p,返回类型不符合要求 - 冗余类型转换:调用函数前你已经把h、r转成了float类型,函数内部不需要重复做float转换
修正后代码
def computepay(h,r): if h>40.0: p = 40 * r + (h - 40) * 1.5 * r else: p = h * r return p hrs = input("Enter Hours:") rate = input("Enter rate:") h = float(hrs) r = float(rate) p = computepay(h,r) print("Pay", p)
验证说明
输入测试参数45小时、10.5每小时费率时,输出结果为498.75,完全符合任务要求。
内容的提问来源于stack exchange,提问作者CircleofSolipsism
相关产品推荐
相关产品推荐

