目前我国个人所得税计算公式如下:
应纳个人所得税税额= 应纳税所得额× 适用税率- 速算扣除数
应纳税所得额为应发工资税前扣除三险一金的金额,个税免征额为3500元/月,2011年9月1日起调整后,也就是2012年实行的7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数
不超过1,500元 3 0
超过1,500元至4,500元的部分 10 105
超过4,500元至9,000元的部分 20 555
超过9,000元至35,000元的部分 25 1,005
超过35,000元至55,000元的部分 30 2,755
超过55,000元至80,000元的部分 35 5,505
超过80,000元的部分 45 13,505
请编写一个个税计算器,用户输入为应发工资税前扣除三险一金的金额,输出应缴税款和实发工资,结果保留小数点后两位。
输入格式:
输入一个数字,如:90000
输出格式:
应缴税款25420.00元,实发工资64580.00元。
输入样例1:
3000
输出样例1:
应缴税款0.00元,实发工资3000.00元。
输入样例2:
9000
输出样例2:
应缴税款545.00元,实发工资8455.00元。
def calculate_tax(income):
# 定义税率表
tax_table = [
(1500, 0.03, 0),
(4500, 0.10, 105),
(9000, 0.20, 555),
(35000, 0.25, 1005),
(55000, 0.30, 2755),
(80000, 0.35, 5505),
(float('inf'), 0.45, 13505)
]
# 计算应纳税所得额
taxable_income = income - 3500
# 判断应纳税所得额属于税率表中的哪个级距
for level in tax_table:
if taxable_income <= level[0]:
tax = taxable_income * level[1] - level[2]
break
# 计算实发工资
salary_after_tax = income - tax
return tax, salary_after_tax
# 用户输入应发工资金额
income = float(input("请输入应发工资金额:"))
# 调用计算函数并格式化输出结果
tax_payable, net_salary = calculate_tax(income)
print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(tax_payable, net_salary))
以上代码答案出错,改正过后
def calculate_income_tax(income):
tax_levels = [
(1500, 3, 0),
(4500, 10, 105),
(9000, 20, 555),
(35000, 25, 1005),
(55000, 30, 2755),
(80000, 35, 5505),
(float('inf'), 45, 13505)
]
taxable_income = income - 3500 # 扣除个税免征额
if taxable_income <= 0:
tax = 0
else:
for level in tax_levels:
if taxable_income <= level[0]:
tax = taxable_income * level[1] / 100 - level[2]
break
tax = max(0, tax)
after_tax_income = income - tax
return tax, after_tax_income
salary = float(input())
tax_payable, net_salary = calculate_income_tax(salary)
print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(tax_payable, net_salary))