手把手教你用Python写一个属于自己的工资计算器
每个月发工资的时候,你是不是也经常对着密密麻麻的工资条发懵?基本工资多少、加班费怎么算、扣了哪些钱……今天我就带大家用Python写一个简单实用的工资计算器,你只需要填入各项数据,就能自动算出实发工资!
一、准备工作
首先确保你的电脑安装了Python(推荐3.6以上版本)。不需要任何第三方库,纯内置模块就能搞定。
打开任意文本编辑器或IDE(比如PyCharm、VS Code),新建一个文件,命名为salary_calculator.py。
二、设计工资计算逻辑
一个完整的工资条通常包含以下几部分:
应发项目:
- 基本工资
- 平时加班(1.5倍工资)
- 周末加班(2倍工资)
- 节假日加班(3倍工资)
- 各类补助(餐补、交通补、住房补等)
- 扣除项目:
- 社保(养老保险、医疗保险、失业保险)
- 住房公积金
- 个人所得税
- 缺勤扣款
- 其他扣款(如罚款、借款等)
- 计算公式很简单:
实发工资 = 应发总额 - 扣除总额三、编写核心代码
第一步:创建数据输入函数
def get_float_input(prompt):
"""获取用户输入的浮点数,处理异常"""
while True:
try:
value = input(prompt)
if value.strip() == '':
return 0.0
return float(value)
except ValueError:
print("请输入有效的数字!")第二步:计算加班费
假设你的月基本工资为8000元,每月按21.75个工作日计算,每天工作8小时:
def calculate_overtime_pay(base_salary, hours_15x, hours_20x, hours_30x):
"""
计算加班费
:param base_salary: 基本工资
:param hours_15x: 1.5倍加班小时数
:param hours_20x: 2倍加班小时数
:param hours_30x: 3倍加班小时数
:return: 加班费总额
"""
# 每小时工资 = 基本工资 / 21.75天 / 8小时
hourly_wage = base_salary / 21.75 / 8
pay_15x = hourly_wage * 1.5 * hours_15x
pay_20x = hourly_wage * 2.0 * hours_20x
pay_30x = hourly_wage * 3.0 * hours_30x
return pay_15x + pay_20x + pay_30x第三步:计算个税
根据2024年个税政策,起征点为5000元,采用累进税率:
def calculate_tax(taxable_income):
"""
计算个人所得税(简化版)
:param taxable_income: 应纳税所得额
:return: 个税金额
"""
if taxable_income <= 0:
return 0
# 税率表(月度)
tax_table = [
(3000, 0.03, 0),
(12000, 0.10, 210),
(25000, 0.20, 1410),
(35000, 0.25, 2660),
(55000, 0.30, 4410),
(80000, 0.35, 7160),
(float('inf'), 0.45, 15160)
]
for limit, rate, deduction in tax_table:
if taxable_income <= limit:
return taxable_income * rate - deduction
return 0第四步:主程序
def main():
print("="*50)
print(" 欢迎使用个人工资计算器")
print("="*50)
# 输入基本信息
print("\n【基本信息】")
base_salary = get_float_input("请输入基本工资(元):")
# 输入加班小时数
print("\n【加班信息】(没有则直接回车跳过)")
hours_15x = get_float_input("平时加班(1.5倍)小时数:")
hours_20x = get_float_input("周末加班(2倍)小时数:")
hours_30x = get_float_input("节假日加班(3倍)小时数:")
# 输入各项补助
print("\n【补助信息】(没有则直接回车跳过)")
meal_allowance = get_float_input("餐补(元):")
transport_allowance = get_float_input("交通补贴(元):")
housing_allowance = get_float_input("住房补贴(元):")
other_allowance = get_float_input("其他补助(元):")
# 输入扣除项
print("\n【扣除信息】(没有则直接回车跳过)")
social_security = get_float_input("社保(养老+医疗+失业,元):")
housing_fund = get_float_input("住房公积金(元):")
absence_deduction = get_float_input("缺勤扣款(元):")
other_deductions = get_float_input("其他扣款(元):")
# 计算各项金额
overtime_pay = calculate_overtime_pay(base_salary, hours_15x, hours_20x, hours_30x)
total_allowances = meal_allowance + transport_allowance + housing_allowance + other_allowance
total_deductions_before_tax = social_security + housing_fund + absence_deduction + other_deductions
# 应纳税所得额 = 基本工资 + 加班费 + 补助 - 社保 - 公积金 - 5000(起征点)
gross_income = base_salary + overtime_pay + total_allowances
taxable_income = gross_income - social_security - housing_fund - 5000
tax = calculate_tax(taxable_income)
# 实发工资
net_salary = gross_income - total_deductions_before_tax - tax
# 输出结果
print("\n" + "="*50)
print(" 工资明细")
print("="*50)
print(f"基本工资: {base_salary:>8.2f} 元")
print(f"加班费合计: {overtime_pay:>8.2f} 元")
print(f" 其中:1.5倍加班 {calculate_overtime_pay(base_salary, hours_15x, 0, 0):>8.2f} 元")
print(f" 2倍加班 {calculate_overtime_pay(base_salary, 0, hours_20x, 0):>8.2f} 元")
print(f" 3倍加班 {calculate_overtime_pay(base_salary, 0, 0, hours_30x):>8.2f} 元")
print(f"补助合计: {total_allowances:>8.2f} 元")
print(f" 其中:餐补 {meal_allowance:>8.2f} 元")
print(f" 交通补贴 {transport_allowance:>8.2f} 元")
print(f" 住房补贴 {housing_allowance:>8.2f} 元")
print(f" 其他补助 {other_allowance:>8.2f} 元")
print("-"*50)
print(f"应发总额: {gross_income:>8.2f} 元")
print("-"*50)
print(f"社保: {social_security:>8.2f} 元")
print(f"住房公积金: {housing_fund:>8.2f} 元")
print(f"缺勤扣款: {absence_deduction:>8.2f} 元")
print(f"其他扣款: {other_deductions:>8.2f} 元")
print(f"个人所得税: {tax:>8.2f} 元")
print("-"*50)
print(f"扣除合计: {total_deductions_before_tax + tax:>8.2f} 元")
print("="*50)
print(f"💰 实发工资: {net_salary:>8.2f} 元")
print("="*50)
if __name__ == "__main__":
main()四、运行效果演示
当你运行这个程序,会看到如下交互界面:
==================================================
欢迎使用个人工资计算器
==================================================
【基本信息】
请输入基本工资(元):8000
【加班信息】(没有则直接回车跳过)
平时加班(1.5倍)小时数:20
周末加班(2倍)小时数:16
节假日加班(3倍)小时数:8
【补助信息】(没有则直接回车跳过)
餐补(元):300
交通补贴(元):200
住房补贴(元):500
其他补助(元):
【扣除信息】(没有则直接回车跳过)
社保(养老+医疗+失业,元):840
住房公积金(元):960
缺勤扣款(元):
其他扣款(元):
==================================================
工资明细
==================================================
基本工资: 8000.00 元
加班费合计: 4609.19 元
其中:1.5倍加班 1379.31 元
2倍加班 1471.26 元
3倍加班 1103.44 元
补助合计: 1000.00 元
其中:餐补 300.00 元
交通补贴 200.00 元
住房补贴 500.00 元
其他补助 0.00 元
--------------------------------------------------
应发总额: 13609.19 元
--------------------------------------------------
社保: 840.00 元
住房公积金: 960.00 元
缺勤扣款: 0.00 元
其他扣款: 0.00 元
个人所得税: 220.92 元
--------------------------------------------------
扣除合计: 2020.92 元
==================================================
💰 实发工资: 11588.27 元
==================================================五、进阶优化建议
- 保存历史记录:可以将每次计算结果保存到CSV文件中,方便对比不同月份工资变化
- 图形化界面:使用tkinter库制作GUI界面,操作更直观
- 配置文件:将社保比例、公积金比例等参数放到配置文件中,便于调整
- 批量计算:支持导入Excel表格,一次性计算多人工资
六、注意事项
- 本工具计算的个税为简化版,实际个税还需考虑专项附加扣除(子女教育、房贷利息等)
- 不同地区的社保公积金比例不同,请根据实际情况填写
- 加班费计算方式可能因公司规定有所不同,建议以公司制度为准
现在就把这份代码复制到你的电脑上试试吧!以后每个月发工资前,自己先算一遍,再也不用担心被算错钱了。如果你有任何改进想法,欢迎继续完善它!
💬 评论列表 (0)
暂无评论,快来抢沙发吧!
发表评论