如何编写Python函数接收基本工资和加班时长输出指定规则的5行6列矩阵
薪资计算矩阵Python实现
功能说明
- 输入:长度为5的基本工资列表
basics、长度为5的加班时长列表overtimes,分别对应5名员工的基本工资和加班时长 - 输出:5行6列的整数矩阵,所有数值四舍五入取整,各列定义如下:
- 第一列:员工编号(1-5)
- 第二列:对应员工的基本工资
- 第三列:11月扣除金额
- 第四列:对应员工的加班时长
- 第五列:对应员工的加班费
- 第六列:11月实发工资
核心计算规则
扣除比例和每小时加班费费率根据基本工资档位浮动,规则如下:
- 基本工资<3000:扣除比例15%,加班费20元/小时
- 3000≤基本工资<5000:扣除比例21%,加班费40元/小时
- 5000≤基本工资<8000:扣除比例27%,加班费60元/小时
- 基本工资≥8000:扣除比例33%,加班费80元/小时
计算公式:
扣除金额 = 基本工资 × 扣除比例
加班费 = 加班时长 × 加班费费率
实发工资 = 基本工资 × (1 - 扣除比例) + 加班费
完整代码实现
def calculate_salary_matrix(basics, overtimes): # 校验输入长度是否符合5名员工的要求 if len(basics) != 5 or len(overtimes) != 5: raise ValueError("基本工资列表和加班时长列表长度必须都为5") salary_matrix = [] for idx in range(5): basic = basics[idx] overtime = overtimes[idx] # 匹配档位获取参数 if basic < 3000: deduction = 0.15 otrate = 20 elif basic < 5000: deduction = 0.21 otrate = 40 elif basic < 8000: deduction = 0.27 otrate = 60 else: deduction = 0.33 otrate = 80 # 计算各字段并四舍五入取整 emp_id = idx + 1 deduct_amount = round(basic * deduction) ot_pay = round(overtime * otrate) net_salary = round(basic * (1 - deduction) + ot_pay) # 组装单行数据 row = [emp_id, round(basic), deduct_amount, round(overtime), ot_pay, net_salary] salary_matrix.append(row) return salary_matrix # 测试示例 if __name__ == "__main__": test_basics = [2800, 4500, 6000, 8500, 3200] test_overtimes = [10, 8, 15, 5, 12] result = calculate_salary_matrix(test_basics, test_overtimes) print("员工编号|基本工资|扣除金额|加班时长|加班费|实发工资") for row in result: print("\t|".join(map(str, row)))
代码说明
- 输入校验逻辑避免传入数据长度不符合5名员工的计算要求
- 所有输出字段统一调用
round()方法完成四舍五入取整 - 示例包含测试用例,运行后可直接查看格式化的输出结果
内容的提问来源于stack exchange,提问作者youfacejaraxxus
相关产品推荐
相关产品推荐

