今天出了一个重磅消息,个税起征点从3500上调到5000啦!
广大IT农民工的生活压力又减轻了一些,有没有
晚上加一个鸡腿,要不要~
开心归开心,我们来用Python算一算,新的规则下,我们需要交多少税,比原先少交多少税。
下面的这张表是税率表,这是对超过免征额部分的收入征收的税率
我们用Python来写两个程序,一个计算旧的工资所得税,一个计算新的工资所得税。
下面的函数old_tax用来计算旧的所得税
import sys
import
bisect
def old_tax(salary):
if
salary <
3500
:
return
0.0
above = salary -
3500
ranges = [
0
,
1500
,
4500
,
9000
,
35000
,
55000
,
80000
]
rate = [
.03
,
.1
,
.2
,
.25
,
.30
,
.35
,
.45
]
i = bisect.bisect_left(ranges, above)
j =
0
tax =
0.0
while
j < i:
if
j+
1
< i:
tax += (ranges[j+
1
]-ranges[j]) * rate[j]
else
:
tax += (above-ranges[j]) * rate[j]
j +=
1
return
tax
下面的函数new_tax用来计算新的所得税
def new_tax(salary):
if salary <
5000:
return
0.0
above = salary -
5000
ranges = [
0
,
1500
,
4500
,
9000
,
35000
,
55000
,
80000
]
rate = [
.03
,
.1
,
.2
,
.25
,
.30
,
.35
,
.45
]
i = bisect.bisect_left(ranges, above)
j =
0
tax =
0.0
while
j < i:
if
j+
1
< i:
tax += (ranges[j+
1
]-ranges[j]) * rate[j]
else
:
tax += (above-ranges[j]) * rate[j]
j +=
1
return
tax
下面是我们的主函数
if __name__ ==
"__main__":
if len(sys.argv) <
2:
print(
"Usage: {} <salary>".format(sys.argv[
0]))
sys.exit(
1)
salary = float(sys.argv[
1
])
old_tax = old_tax(salary)
new_tax = new_tax(salary)
print(
"old: {}, new: {}"
.format(old_tax, new_tax))
上面的代码保存在tax.py中。
接下来,我们来用tax.py算一算不同工资水平的个税
python3 tax.py
5000
old:
45.0, new:
0.0
每月5000元的工资,以前要交45元的个税,起征点上调到5000后,就不用交税了。
python3 tax.py
10000
old:
745.0, new:
445.0
每月10000元的工资,以前要交745元的个税,现在只要445元,比原先少交300元。
python3 tax.py
20000
old:
3120.0, new:
2745.0
每月20000元的工资,以前要交3120元的个税,现在交2745元,比原先少交375元。
python3 tax.py
50000
old:
11195.0, new:
10745.0
每月50000元的工资,以前要交11195元的个税,现在交10745元,比原先少交450元。
python3 tax.py
100000
old:
29920.0, new:
29245.0
每月10万元的工资,以前要交29920元的个税,现在交29245元,比原先少交675元。
大家可以复制一下代码,算算自己可以少交多少税。