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

修改Python员工薪资计算代码实现格式化表格输出

Python员工薪资计算程序格式化输出修改方案

核心修改方向

  • 补充员工类型字段,解决字段缺失问题
  • 统一周薪数值格式化规则,所有金额固定保留2位小数
  • 采用固定列宽对齐排版,增加表头、分隔线,末尾追加格式化总周薪统计

具体修改步骤

  1. 类属性补充
    在Employee父类添加占位的员工类型属性,三个子类分别配置对应的员工类型值,原有薪资计算逻辑不需要改动。
  2. 输出逻辑重构
    删除原有缩进打印纯文本的逻辑,改用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:01:29