计算含加班费的Gross_pay时输出结果不符预期,请求排查原因
加班费计算代码错误分析与修正
问题根源
你的代码逻辑错误在于:加班工时被重复计算了正常工资。当前代码先把所有工时(包括加班的5小时)按正常时薪计算,再额外加上加班工时的1.5倍工资,相当于加班工时拿了2.5倍工资(1倍正常+1.5倍加班),这和常规加班费规则不符。
常规加班费逻辑是:
- 40小时以内:按正常时薪计算
- 超出40小时的部分:按1.5倍时薪计算
错误代码的计算过程(测试数据)
h = 45,r =10.50 # 正常工资部分:45*10.5 = 472.5 # 加班费:5*(10.5*1.5)=78.75 # 总工资:472.5+78.75=551.25
修正后的代码
写法一:分两部分计算(更直观)
hrs = input("Enter Hours:") rate = input("Enter rate per hour:") h = float(hrs) r = float(rate) if h > 40: # 40小时正常工资 + 超出部分1.5倍工资 gross_pay = 40 * r + (h - 40) * r * 1.5 else: gross_pay = h * r print(gross_pay)
写法二:基于正常工资补加班差额
hrs = input("Enter Hours:") rate = input("Enter rate per hour:") h = float(hrs) r = float(rate) gross_pay = h * r if h > 40: # 加班部分多给0.5倍(因为已经算过1倍正常工资) overtime_extra = (h - 40) * r * 0.5 gross_pay += overtime_extra print(gross_pay)
修正后测试数据验证
代入hrs=45,rate=10.50:
- 40*10.5 = 420
- 5*(10.5*1.5)=78.75
- 总工资:420+78.75=497.85,符合预期结果
内容的提问来源于stack exchange,提问作者Nicola Maganuco
相关产品推荐
相关产品推荐

