一、旧税率表与新税率表比较

  以前起征点是3500,2018年10月1日起起征点正式修改为5000,下面我们用Python来分别计算新旧个人所得税分别为多少?

二、旧的个人所得税

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 = [0.03,0.1,0.2,0.25,0.30,0.35,0.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

三、新的个人所得税

def new_tax(salary):
if salary < 5000:
return 0.0
above = salary - 5000
ranges = [0,3000,12000,25000,35000,55000,80000]
rate = [0.03,0.10,0.20,0.25,0.30,0.35,0.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文件中,利用cmd进行打开计算可以得到:

五、其他

1.bisect模块中的bisect_left(L,x)函数可以返回x在L中应该插入的位置;

2.sys.argv可以实现外部传递参数,其中sys.argv[0]是脚本的名字,1,2...则为传递的参数。


END 2018-11-01 23:05:12

Python学习笔记:个税起征点上调至5000,算一算少交多少税?的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner | 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

随机推荐

  1. Jenkins(四)---Jenkins添加密钥对

    一.添加密钥 1.添加git用户和git密码对 ,用于git客户端从gitlab上拉取代码到本地 /** lihaibo 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原 ...

  2. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站

    //其实比赛的时候就想到这方法了,但看到数据太吓人,就没写//看着标程,实际上就是这方法,太坑爹…… /* 假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2 圆1与圆2的交集为可以设置 ...

  3. 【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测

    角点 特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系.点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做“关键特征点”(k ...

  4. git更换 拉取推送地址

    更换:git remote set-url originhttp://git.caomall.cn/sucry/mouse.git」

  5. LocalDateTime与字符串互转/Date互转/LocalDate互转/指定日期/时间比较

    Java 8中表示日期和时间的类有多个,主要的有: Instant:表示时刻,不直接对应年月日信息,需要通过时区转换 LocalDateTime: 表示与时区无关的日期和时间信息,不直接对应时刻,需要 ...

  6. python3使用stmplib发送邮件

    代码如下: import smtplib from email.mime.text import MIMEText from email.header import Header from email ...

  7. lxml视频讲座

    lxml视频讲座 Winfortune 01 - How to create an equivalent of fortune and cowsay for Windows, using Python ...

  8. JS对象中的原型

    对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...

  9. Scrapy可视化管理软件SpiderKeeper

    通常开发好的Scrapy爬虫部署到服务器上,要不使用nohup命令,要不使用scrapyd.如果使用nohup命令的话,爬虫挂掉了,你可能还不知道,你还得上服务器上查或者做额外的邮件通知操作.如果使用 ...

  10. 守卫者的挑战(guard)

    problem Pro 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过.“我,Nizem,是黑魔法圣殿的守卫者.如果你能通过 ...