个税 = (税前工资 - 五险一金 - 免征额) * 税率 - 速扣数

税后工资 = 税前工资 - 五险一金 - 个税

 

 

salary_before_tax = int(input('Please input your Salary before tax:'))
threshold = 3500  #免征点

#个人五险一金比率,养老8%,医疗2%,失业0.2%,公积金12%
old_age_rating = 0.08
medical_rating = 0.02
unemployment_rating = 0.002
housing_fund_rating = 0.12

# 2016年社平工资7706,五险一金的上限是社评三倍工资为基数
average_salary = 7706
triple_average_salary = 3 * average_salary

if salary_before_tax < triple_average_salary:
    total_insurance = salary_before_tax * (old_age_rating + medical_rating + unemployment_rating + housing_fund_rating)
else:
    total_insurance = triple_average_salary * (old_age_rating + medical_rating + unemployment_rating + housing_fund_rating)

# 纳税额
payment = salary_before_tax - total_insurance - threshold

if payment <= 1500:
    tax = payment * 0.03
elif payment > 1500 and payment <= 4500:
    tax = payment * 0.1 - 105
elif payment > 4500 and payment <= 9000:
    tax = payment * 0.2 - 555
elif payment > 9000 and payment <= 35000:
    tax = payment * 0.25 - 1005
elif payment > 35000 and payment <= 55000:
    tax = payment * 0.3 - 2755
elif payment > 55000 and payment <= 80000:
    tax = payment * 0.35 - 5505
elif payment > 80000:
    tax = payment * 0.45 - 13505
    
# 税后工资
salary_after_tax = salary_before_tax - total_insurance - tax

print('Salary after tax is %d' % salary_after_tax)

 

2018年3月更新,稍微改了一下,用函数处理

def taxRate(base):
    if base < 0:
        tax = 0
    elif base <= 1500:
        tax = base * 0.03
    elif base > 1500 and base <= 4500:
        tax = base * 0.1 - 105
    elif base > 4500 and base <= 9000:
        tax = base * 0.2 - 555
    elif base > 9000 and base <= 35000:
        tax = base * 0.25 - 1005
    elif base > 35000 and base <= 55000:
        tax = base * 0.3 - 2755
    elif base > 55000 and base <= 80000:
        tax = base * 0.35 - 5505
    elif base > 80000:
        tax = base * 0.45 - 13505

    print('Tax of salary is : %d' % tax)

    return tax

def salaryAfterTax(salaryBeforeTax):

    #免征点3500 ,个人五险一金比率,养老8%,医疗2%,失业0.2%,公积金12%
    threshold = 3500
    oldAgeRating = 0.08
    medicalRating = 0.02
    unemployRating = 0.002
    housingFundRating = 0.12

    # 2016年社平工资7706,五险一金上限是社评三倍工资
    averageSalary = 7706
    tripleAverageSalary = 3 * averageSalary

    if salaryBeforeTax < tripleAverageSalary:
        totalInsurance = salaryBeforeTax * (oldAgeRating + medicalRating + unemployRating + housingFundRating)
        housingFund = salaryBeforeTax * housingFundRating
    else:
        totalInsurance = tripleAverageSalary * (
            oldAgeRating + medicalRating + unemployRating + housingFundRating)
        housingFund = tripleAverageSalary * housingFundRating   #公积金封顶
        #housingFund = salaryBeforeTax * housingFundRating     #公司给补超额公积金部分

    # 纳税额
    payment = salaryBeforeTax - totalInsurance - threshold
    tax = taxRate(payment)

    # 税后工资
    salaryAfterTax = salaryBeforeTax - totalInsurance - tax
    actualIncome = salaryAfterTax + housingFund * 2

    print('Housing Fund is : %d' % housingFund)
    print('Total insurance is : %d ' % totalInsurance)
    print('Tax of salary is : %d' % tax)
    print('Salary after tax is : %d' % salaryAfterTax)
    print('Actual income including housing fund is : %d ' % actualIncome)
    print('Actual income Percent is : %.2f %%' % float(actualIncome * 100 / salaryBeforeTax))

    return salaryAfterTax

if __name__ == '__main__':
    salary = int(input('Please input your Salary before tax:'))
    salaryAfterTax(salary)

 

posted on 2018-01-03 18:19  Fia  阅读(3295)  评论(0编辑  收藏  举报