如何在不修改1.5倍加班费率的前提下修正Python薪资计算器?
修正加班薪资计算的Python程序
你的问题核心是加班时重复计算了超出40小时部分的正常薪资——当前代码把总工时都按正常时薪算,又额外加了1.5倍的加班工资,等于超出的那部分工时拿了2.5倍时薪,这不符合规则。要保留1.5倍加班费率的话,只需要把正常薪资的计算范围限定在40小时内,具体修正如下:
修正后的代码
hrs = input("Enter Hours: ") h = float(hrs) rate = input("Enter Rate: ") r = float(rate) if h > 40: # 正常薪资:仅前40小时按原时薪计算 reg = 40 * r # 加班薪资:超出40小时的部分按1.5倍时薪计算 otp = (h - 40) * (r * 1.5) final_pay = reg + otp print("Pay:", final_pay) else: reg_pay = h * r print("Pay:", reg_pay)
逻辑拆解(以45小时、时薪10美元为例)
- 正常工时薪资:
40 * 10 = 400美元(仅计算前40小时的薪资) - 加班工时:
45 - 40 = 5小时 - 加班薪资:
5 * (10 * 1.5) = 75美元 - 总薪资:
400 + 75 = 475美元(符合规则的正确结果)
通用思路(适配后续复杂版本)
不管以后规则怎么变(比如正常工时阈值调整、加班倍数变化、甚至多段加班费率),核心逻辑都是:
- 拆分工时:把总工时分成「正常阈值内的时长」和「超出阈值的时长」
- 分别计算:不同区间的工时对应不同的费率,不要重复计算同一区间的薪资
- 求和得到总薪资
比如以后如果有“前40小时正常,40-60小时1.5倍,60小时以上2倍”的规则,也可以用同样的思路拆分三段计算,再相加即可。
内容的提问来源于stack exchange,提问作者Connor
相关产品推荐
相关产品推荐

