Python学习笔记:个税起征点上调至5000,算一算少交多少税?
一、旧税率表与新税率表比较


以前起征点是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,算一算少交多少税?的更多相关文章
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
随机推荐
- CentOS 7安装zabbix-2.4.8监控
说明: 操作系统:CentOS 7 Web环境:Nginx+MySQL+PHP zabbix版本:zabbix-2.4.8.tar.gz 备注:Linux下安装zabbix需要有LAMP或者LNMP运 ...
- python之旅:网络基础之网络协议篇
一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...
- L. Twice Equation ACM Nanning 2017
https://nanti.jisuanke.com/t/19978 acm提交:类 Main 使用java:高精度 BigInteger import java.math.BigInteger; i ...
- 求n个数中前k个数,按之前的顺序输出(HK IPM)
For smaller k: #include <cstdio> #include <cstdlib> #include <cstring> #include &l ...
- K8S调度之标签选择器
Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod 应 ...
- 疯狂Android讲义
1 Android应用和开发环境2 Android应用的界面编程3 Android的事件处理4 Activity Fragment5 Intent IntentFilter6 Android应用的资源 ...
- Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
- [转]windows下安装python MySQLdb及问题解决
转自 https://blog.csdn.net/ping523/article/details/54135228#commentBox 之前按照网络上搜罗的教程安装了python-mysql(1.2 ...
- Nlog写日志到数据库
https://github.com/nlog/NLog/wiki/Database-Target
- CF&&CC百套计划1 Codeforces Round #449 B. Ithea Plays With Chtholly
http://codeforces.com/contest/896/problem/B 题意: 交互题 n张卡片填m个1到c之间的数,1<=n*ceil(c/2)<=m 最后填出一个单调非 ...