修改Python员工薪资计算代码实现格式化表格输出
Python员工薪资计算程序格式化输出修改方案
核心修改方向
- 补充员工类型字段,解决字段缺失问题
- 统一周薪数值格式化规则,所有金额固定保留2位小数
- 采用固定列宽对齐排版,增加表头、分隔线,末尾追加格式化总周薪统计
具体修改步骤
- 类属性补充
在Employee父类添加占位的员工类型属性,三个子类分别配置对应的员工类型值,原有薪资计算逻辑不需要改动。 - 输出逻辑重构
删除原有缩进打印纯文本的逻辑,改用Python内置字符串对齐方法排版:
- 文本类字段(员工类型、员工姓名、所属部门)采用左对齐
- 金额类字段(周薪)采用右对齐,保证数值数位对齐
- 打印表头后输出等宽分隔线,遍历完所有员工数据后再次打印分隔线,最后输出总周薪
代码实现参考
类定义修改部分
class Employee: # 父类占位员工类型 emp_type = "未知类型" def __init__(self, name, department): self.name = name self.department = department # 保留原有的calculate_weekly_pay抽象方法即可 def calculate_weekly_pay(self): raise NotImplementedError class CommissionPaid(Employee): # 提成制员工类型标识 emp_type = "提成制员工" def __init__(self, name, department, *args, **kwargs): super().__init__(name, department) # 保留原有的提成薪资相关属性初始化、计算逻辑即可 class HourlyPaid(Employee): # 时薪制员工类型标识 emp_type = "时薪制员工" def __init__(self, name, department, *args, **kwargs): super().__init__(name, department) # 保留原有的时薪相关属性初始化、加班费计算逻辑即可 class SalaryPaid(Employee): # 月薪制员工类型标识 emp_type = "月薪制员工" def __init__(self, name, department, *args, **kwargs): super().__init__(name, department) # 保留原有的月薪相关属性初始化、计算逻辑即可
主程序输出部分
if __name__ == "__main__": # 保留原有的员工实例化、列表生成逻辑即可,以下为示例数据 emp_list = [ CommissionPaid("张三", "销售部", base_salary=4000, commission_rate=0.1, sales=12000), HourlyPaid("李四", "运维部", hourly_rate=35, weekly_hours=42), SalaryPaid("王五", "技术部", monthly_salary=16000) ] # 列宽配置,可根据实际字段长度调整对应数值 COL_WIDTHS = [12, 10, 12, 10] total_weekly_pay = 0 # 打印表头 header = ["员工类型", "员工姓名", "所属部门", "周薪(元)"] print("".join(col.ljust(COL_WIDTHS[idx]) for idx, col in enumerate(header))) # 打印表头分隔线 print("-" * sum(COL_WIDTHS)) # 逐行打印员工薪资信息 for emp in emp_list: pay = emp.calculate_weekly_pay() total_weekly_pay += pay row = [ emp.emp_type.ljust(COL_WIDTHS[0]), emp.name.ljust(COL_WIDTHS[1]), emp.department.ljust(COL_WIDTHS[2]), f"{pay:.2f}".rjust(COL_WIDTHS[3]) ] print("".join(row)) # 打印总计分隔线和总周薪 print("-" * sum(COL_WIDTHS)) total_row = [ "总周薪".ljust(sum(COL_WIDTHS[:3])), f"{total_weekly_pay:.2f}".rjust(COL_WIDTHS[3]) ] print("".join(total_row))
运行效果示例
员工类型 员工姓名 所属部门 周薪(元) ---------------------------------------- 提成制员工 张三 销售部 1900.00 时薪制员工 李四 运维部 1470.00 月薪制员工 王五 技术部 4000.00 ---------------------------------------- 总周薪 7370.00
如果实际业务中部门、姓名字段长度较长,直接调整COL_WIDTHS列表里对应位置的宽度数值即可适配。
内容的提问来源于stack exchange,提问作者Pounder69
相关产品推荐
相关产品推荐

