Python薪资计算器开发疑问:超60小时双倍薪资计算实现难题
Python薪资计算器:解决超60小时双倍薪资计算问题
嘿,我明白你卡在超60小时部分的双倍薪资逻辑上了!咱们把规则拆成几个清晰的阶段,就能轻松实现完整的薪资计算逻辑。
首先再明确一遍咱们的计算规则,避免歧义:
- ≤40小时:全部按标准时薪计算
- 40 < 时长 ≤60小时:前40小时按标准时薪,超出40的部分按1.5倍时薪
- >60小时:前40小时标准时薪,40-60小时部分1.5倍,超出60的部分直接按2倍时薪
接下来是完整的实现代码,我还加了输入验证,确保用户输入的是有效数字:
def calculate_payroll(): # 获取用户输入并验证 try: weekly_hours = float(input("请输入每周工作时长:")) hourly_rate = float(input("请输入小时薪资率:")) except ValueError: print("请输入有效的数字!") return # 分阶段计算薪资 if weekly_hours <= 40: total_pay = weekly_hours * hourly_rate elif 40 < weekly_hours <= 60: # 前40小时正常,超出40的部分1.5倍 regular_pay = 40 * hourly_rate overtime_pay_15x = (weekly_hours - 40) * hourly_rate * 1.5 total_pay = regular_pay + overtime_pay_15x else: # 前40正常,40-60部分1.5倍,超60部分2倍 regular_pay = 40 * hourly_rate overtime_pay_15x = 20 * hourly_rate * 1.5 # 40到60共20小时 overtime_pay_2x = (weekly_hours - 60) * hourly_rate * 2 total_pay = regular_pay + overtime_pay_15x + overtime_pay_2x # 格式化输出结果 print(f"本周总薪资为:${total_pay:.2f}") # 调用函数 calculate_payroll()
代码逻辑解释:
- 输入验证:用
try-except捕获用户输入非数字的情况,避免程序崩溃 - 分条件计算:
- 当时长≤40时,直接相乘即可
- 40到60之间时,拆分出前40小时和超出部分分别计算
- 超过60小时时,把薪资拆成三个部分:标准时长、1.5倍时长、2倍时长,分别计算后相加
测试案例:
比如用户输入每周65小时,时薪$20:
- 前40小时:40*20 = $800
- 40-60小时:20201.5 = $600
- 超60的5小时:5202 = $200
- 总薪资:800+600+200 = $1600,代码会输出正确结果
这样拆分逻辑后,超60小时的部分就清晰了,不会和其他阶段混淆。
内容的提问来源于stack exchange,提问作者J M
相关产品推荐
相关产品推荐

