Python—完美计算个税和税后收入(求职重要参考神器)

本文介绍了一个Python脚本,用于计算税后收入、公积金和个人医保账户收入等。通过输入月薪、年终奖和社会保险基数等参数,该脚本能帮助比较不同工作offer的实际收益。

求职的时候,经常被问到期望薪资如何,收到多个offer,也要进行薪资和福利的对比,尤其是税后收入和公积金。可是自从个税改革后,个税计算变得非常繁琐,也没有发现很好的网页,于是自己写了一个python脚本,感觉还不错,充分考虑了每个月的个税,税后收入,以及公积金和医保入账情况。

尤其是如果两个offer税前看似接近,但是社保和公积金基数,公积金比例差别不小,那么对实际税后收益影响就很大,这就是抉择的重要依据,也是往往很难算得清。依我看,税后收入+公积金是最重要的标准,另外医保个人账户收入,也不可忽视。其他的,比如餐补车补旅游啊等等福利,这里就照顾不到了,可以算进月薪里面算。

#第n月的税后收入,公积金收入,医保收入等
def total_benf(n,salary,shebao,yibao,gongjijin,gjj_rate,append):  #参数为第N月,月薪,社保基数,医保基数,公积金基数,公积金比例,附加扣除
  after_tax=salary-shebao*0.08-yibao*0.02-gongjijin*gjj_rate-11-gettax(n,salary,shebao,yibao,gongjijin,gjj_rate,append)
  return after_tax,gongjijin*gjj_rate*2,yibao*0.05,shebao*0.08

#年终奖个税
def getbonustax(bonus):
  tax_income=bonus
  if(tax_income<36000):
      rate=0.03
      sukou=0
  elif(tax_income>=36000 and tax_income<144000):
    rate=0.1
    sukou=2520
  elif(tax_income>=144000 and tax_income<300000):
    rate=0.2
    sukou=16920
  elif(tax_income>=300000 and tax_income<420000):
    rate=0.25
    sukou=31920
  elif(tax_income>=420000 and tax_income<660000):
    rate=0.3
    sukou=52920
  elif(tax_income>=660000 and tax_income<960000):
    rate=0.35
    sukou=85920
  else:
    rate=0.45
    sukou=181920
  return tax_income*rate-sukou
 
#第n月的个税 参数为第N月,月薪,社保基数,医保基数,公积金基数,公积金比例,附加扣除
def gettax(n,salary,shebao,yibao,gongjijin,gjj_rate,append):
  if(n==1):           #第一个月的算法
    tax_income=salary-shebao*0.08-yibao*0.02-gongjijin*gjj_rate-11-5000-append
    if(tax_income<=0):
      rate=0
      sukou=0
    elif(tax_income<36000):
      rate=0.03
      sukou=0
    elif(tax_income>=36000 and tax_income<144000):
      rate=0.1
      sukou=2520
    elif(tax_income>=144000 and tax_income<300000):
      rate=0.2
      sukou=16920
    elif(tax_income>=300000 and tax_income<420000):
      rate=0.25
      sukou=31920
    elif(tax_income>=420000 and tax_income<660000):
      rate=0.3
      sukou=52920
    elif(tax_income>=660000 and tax_income<960000):
      rate=0.35
      sukou=85920
    else:
      rate=0.45
      sukou=181920
    return tax_income*rate-sukou
  else:                              #各月累计的算法
    tax_income=salary-shebao*(0.08+0.02)-gongjijin*0.05-11-5000-append  #5000就是免征额
    tax_income=tax_income*n          #前n月总收入
    if(tax_income<=0):
      rate=0
      sukou=0
    elif(tax_income<36000):
      rate=0.03
      sukou=0
    elif(tax_income>=36000 and tax_income<144000):
      rate=0.1
      sukou=2520
    elif(tax_income>=144000 and tax_income<300000):
      rate=0.2
      sukou=16920
    elif(tax_income>=300000 and tax_income<420000):
      rate=0.25
      sukou=31920
    elif(tax_income>=420000 and tax_income<660000):
      rate=0.3
      sukou=52920
    elif(tax_income>=660000 and tax_income<960000):
      rate=0.35
      sukou=85920
    else:
      rate=0.45
      sukou=181920
    res=tax_income*rate-sukou
    for i in range(1,n):           #还要减去之前每个月的扣税
      res=res-gettax(i,salary,shebao,yibao,gongjijin,gjj_rate,append)
    return res

#统计全年的个税和各种收入 参数为月薪,社保基数,医保基数,公积金基数,公积金比例,附加扣除
def calc_total(salary,bonus,shebao,yibao,gongjijin,gjj_rate,append=1000):
  n=12                #一年12个月
  tax_sum=0
  after_taxsum=0
  gjj_sum=0
  yibao_sum=0
  yanglao_sum=0

  print('方案:月薪{},年奖金{},社保基数{},医保基数{},公积金基数{},公积金比例{}\n'.format(salary,bonus,shebao,yibao,gongjijin,gjj_rate))
  for i in range(1,n+1):
    tax=gettax(i,salary,shebao,yibao,gongjijin,gjj_rate,append)
    tax_sum+=tax
    print("第{}月的个税为{}".format(i,round(tax)),end="\t")

    month_res=total_benf(i,salary,shebao,yibao,gongjijin,gjj_rate,append)
    after_tax=month_res[0]
    after_taxsum+=after_tax
    print("税后收入为{}".format(round(after_tax,1)),end=" ")

    gjj=month_res[1]
    gjj_sum+=gjj
    print("公积金入账为{}".format(gjj),end=" ")
    print("税后加公积金为{}".format(round(after_tax+gjj,0)),end="\t")

    yanglao=month_res[3]
    yanglao_sum+=yanglao
    print("养老入账为{}".format(round(yanglao)),end="  ")

    yiliao=month_res[2]
    yibao_sum+=yiliao
    print("医保入账为{}".format(round(yiliao)))
   
  bonus_tax=getbonustax(bonus)
  bonus_income=bonus-bonus_tax       #年终奖减去个税  
  print('年终奖个税为{}'.format(round(bonus_tax)),end="\t")
  print('税后收入为{}\n'.format(bonus_income))

  tax_sum+=bonus_tax
  after_taxsum+=bonus_income
  print('累计年度个税为{}'.format(round(tax_sum)),end="\t")
  print('税后收入为{}'.format(round(after_taxsum)),end=" ")
  print('公积金入账为{}'.format(round(gjj_sum,1)),end=" ")
  print('税后加公积金为{}'.format(round(after_taxsum+gjj_sum)),end="\t")
  print('养老入账为{}'.format(round(yanglao_sum)),end=" ")
  print('医保入账为{}'.format(round(yibao_sum)))
  
  print('-------------------\t-----------------------------------------------------------\t-----------------------------')

calc_total(salary=11000,bonus=8000,shebao=2000,yibao=2000,gongjijin=2000,gjj_rate=0.05)
calc_total(salary=22000,bonus=60000,shebao=22000,yibao=22000,gongjijin=22000,gjj_rate=0.05)
calc_total(salary=23000+16*22,bonus=60000,shebao=8400,yibao=8400,gongjijin=15200,gjj_rate=0.05,append=2000)
#salary  	月薪+月补贴
#bonus   	年终奖金
#shebao  	养老保险基数
#yibao   	医疗保险基数
#gongjijin  公积金基数
#gjj_rate  	公积金比例
#append  	附加扣除 默认1000

效果如下 排列非常整齐,美观

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值