You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

代码逻辑解释:

  1. 输入验证:用try-except捕获用户输入非数字的情况,避免程序崩溃
  2. 分条件计算:
    • 当时长≤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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:10:06