完善工资计算器
项目需求改变:
输出税后工资
计算过程需要扣除社会保险费用
支持多人同时计算工资
打印税后工资列表
个税计算公式:
应纳税所得额 = 工资金额 - 各项社会保险费 - 起征点(3500元)
应纳税额 = 应纳税所得额 × 税率 - 速算扣除数
其中各项社会保险费我们在本程序中需要计算,计算公式由于各地不一样,我们此处使用国内某一城市的计算比例,占工资金额的比例如下:
养老保险:8%
医疗保险:2%
失业保险:0.5%
工伤保险:0%
生育保险:0%
公积金:6%
注意,此处不考虑社保缴费基数的问题。直接使用工资金额计算社保费用即可。
税率及速算扣除数对应表:
全月应纳税额 税率 速算扣除数(元)
不超过 1500 元 3% 0
超过 1500 元至 4500 元 10% 105
超过 4500 元至 9000 元 20% 555
超过 9000 元至 35000 元 25% 1005
超过 35000 元至 55000 元 30% 2755
超过 55000 元至 80000 元 35% 5505
超过 80000 元 45% 13505
目标
完成任务需要达成的目标:
程序存放的位置 /home/shiyanlou/calculator.py
程序可以处理1个及多个员工工资计算,输出的内容为1行或多行,每行内容必须为工号:税后工资
程序返回的税后工资数字保留两位小数,如果是整数,仍然需要保留xxx.00 这种形式
!/usr/bin/env python3
import sys
def cal(**em_dict):
tax_dict = {}
for p in em_dict.keys():
t = em_dict[p]-em_dict[p]*0.165 - 3500
if t < 0:
tax = 0
elif t<1500:
tax = t * 0.03
elif t<4500:
tax = t * 0.1 - 105
elif t<9000:
tax = t * 0.2 - 555
elif t<35000:
tax = t * 0.25 - 1055
elif t<55000:
tax = t * 0.3 - 2755
elif t<80000:
tax = t * 0.35 - 5505
else:
tax = t * 0.45 -13505
taxf = tax
mon = em_dict[p] - taxf - em_dict[p]*0.165
tax_dict[p] = format(mon,'.2f')
print("-----*------------")
return tax_dict
def main():
print('----main----')
if len(sys.argv) < 2:
print("Parameter Error")
else:
em_list =sys.argv[1:]
em_dict = {}
try:
for em in em_list:
t = em.split(':',1)
em_dict[t[0]] =int(t[1])
except TypeError:
print('Parameter Error')
else:
m = cal(**em_dict)
# print(m)
for gh,gz in m.items():
print("%s:%s"%(gh,gz))
???|óD?í?ó??2??a?ao????óé??a????3ìDò??óDê?3?
if name=='main':
main()