Python - 计算个人所得税
最近在学python,写了个计算个人所得税计算的脚本,分享。
以下为python3适用版本
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 该python脚本用于计算税后工资
# 提示用户输入工资
sal = input("Please input your salary: \n")
# 自定义一个异常
class MyException(Exception):
def __init__(self, *args):
self.args = args
try:
sal = int(sal)
if sal < 0:
raise MyException
except ValueError:
print("给劳资输一个整数,别带字母和小数!\n")
except MyException:
print("你大爷的,工资是负数?\n")
else:
# 计算社保和公积金以及扣除该部分之后的工资
shebao = round(sal * 0.105, 2)
gongjijin = round(sal * 0.07, 2)
aft_sal = sal - shebao - gongjijin
# 税率(这个没变)
sui_lv = [0.45, 0.35, 0.3, 0.25, 0.2, 0.1, 0.03]
# 税改前超出起征点各阶段工资
jin_e1 = [80000, 55000, 35000, 9000, 4500, 1500, 0]
# 税改后超出起征点各阶段工资
jin_e2 = [80000, 55000, 35000, 25000, 12000, 3000, 0]
# 起征点(调整前3500,调整后5000)
qizheng1 = 3500
qizheng2 = 5000
# 应缴税工资:税前工资-社保-公积金-起征点
yinjiao1 = aft_sal - qizheng1
yinjiao2 = aft_sal - qizheng2
# 定义计算所得税函数
# a应缴税工资,b超出起征点各阶段工资,c税率
def jisuan(a, b, c):
sum = 0
for i in range(0, len(b)):
if a > b[i]:
sum += (a - b[i]) * c[i]
a = b[i]
return round(sum, 2)
# 计算所得税
suodesui1 = jisuan(yinjiao1, jin_e1, sui_lv)
suodesui2 = jisuan(yinjiao2, jin_e2, sui_lv)
print("\n税前月收入: {}".format(sal))
print("五险一金: {}".format(shebao + gongjijin))
print("旧税率应纳税: {} 元,税后收入: {} 元".format(suodesui1, round(aft_sal-suodesui1, 2)))
print("新税率应纳税: {} 元,税后收入: {} 元\n".format(suodesui2, round(aft_sal-suodesui2, 2)))
--------------------------------------------------------分割线------------------------------------------------------------------------------------
以下为python2适用的版本
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 该python脚本用于计算税后工资
# 提示用户输入工资
sal = raw_input("Please input your salary: \n")
# 自定义一个异常
class MyException(Exception):
def __init__(self, *args):
self.args = args
try:
sal = int(sal)
if sal < 0:
raise MyException
except ValueError:
print("给劳资输一个整数,别带字母和小数!\n")
except MyException:
print("你大爷的,工资是负数?\n")
else:
# 计算社保和公积金以及扣除该部分之后的工资
shebao = round(sal * 0.105, 2)
gongjijin = round(sal * 0.07, 2)
aft_sal = sal - shebao - gongjijin
# 税率(这个没变)
sui_lv = [0.45, 0.35, 0.3, 0.25, 0.2, 0.1, 0.03]
# 税改前超出起征点各阶段工资
jin_e1 = [80000, 55000, 35000, 9000, 4500, 1500, 0]
# 税改后超出起征点各阶段工资
jin_e2 = [80000, 55000, 35000, 25000, 12000, 3000, 0]
# 起征点(调整前3500,调整后5000)
qizheng1 = 3500
qizheng2 = 5000
# 应缴税工资:税前工资-社保-公积金-起征点
yinjiao1 = aft_sal - qizheng1
yinjiao2 = aft_sal - qizheng2
# 定义计算所得税函数
# a应缴税工资,b超出起征点各阶段工资,c税率
def jisuan(a, b, c):
sum = 0
for i in range(0, len(b)):
if a > b[i]:
sum += (a - b[i]) * c[i]
a = b[i]
return round(sum, 2)
# 计算所得税
suodesui1 = jisuan(yinjiao1, jin_e1, sui_lv)
suodesui2 = jisuan(yinjiao2, jin_e2, sui_lv)
print("\n税前月收入: %d" % sal)
print("五险一金: %.2f" % (shebao + gongjijin))
print("旧税率应纳税: %.2f 元,税后收入: %.2f 元" % (suodesui1, (aft_sal-suodesui1)))
print("新税率应纳税: %.2f 元,税后收入: %.2f 元\n" % (suodesui2, (aft_sal-suodesui2)))
Python - 计算个人所得税的更多相关文章
- 【Python】个人所得税
以月收入1w,举例计算个税: #!/usr/bin/python #-*- encoding:UTF-8 -*- #========================================== ...
- [转载] python 计算字符串长度
本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...
- Python计算斗牛游戏的概率
Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...
- 利用Python计算π的值,并显示进度条
利用Python计算π的值,并显示进度条 第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- Python计算分位数
Python计算分位数 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gdkyxy2013/article/details/80911514 ...
- python 计算校验和
校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段.其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的. 使用python计算校验和时记住做截断就可以了. 这里 ...
- 为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死
为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死
- python计算时间差的方法
本文实例讲述了python计算时间差的方法.分享给大家供大家参考.具体分析如下: 1.问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2.解决方法: 标准模块date ...
随机推荐
- C# 分析 IIS 日志(Log)
由于最近又要对 IIS日志 (Log) 分析,以便得出各个搜索引擎每日抓取的频率,所以这两天一直在尝试各个办法来分析 IIS 日志 (Log),其中尝试过:导入数据库.Log parser.Powse ...
- JavaScript--序列化以及转义
一.序列化 1.1 序列化 将其他对象转换为字符串,用法:JSON.stringify() var li = [1,2,3,4]; var new_li = JSON.stringify(li); n ...
- 说说Cookie和Session
Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态.它们有各自的缺点和优点.而且,他们的优点和应用场景是对立的. Cookie 完整地描述:当一个用户通过HTTP访问一个 ...
- python删除列表元素remove,pop,del
python删除列表元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2 ...
- RESTful记录-RESTful介绍
RESTful Web服务是基于REST架构的Web服务.在REST架构一切都是一种资源. RESTful Web服务是轻量级的,高度可扩展性和可维护性,并且非常常用于创建基于API的Web应用程序. ...
- Rime中州韵导入QQ五笔词库
过程记录如下: 1.在QQ五笔中导出QQ五笔系统词库 2.使用「深蓝词库转换」转换QQ五笔系统词库,输入源修改为”五笔86版“,输出方式修改为Rime中州韵-五笔. 3.在Ubuntu中打开Termi ...
- go语言学习之路(一)Hello World
为什么要使用 Go 语言?Go 语言的优势在哪里? 1.部署简单. 2.并发性好. 3.良好的语言设计. 4.执行性能好. Go环境搭建 Golang下载 国外镜像 https://www.gola ...
- ubuntu 开机自动挂载分区
转载: http://blog.sina.com.cn/s/blog_142e95b170102vx2a.html 我的计算机是双硬盘,一个是windows系统,一个是Fedora和ubuntu系统. ...
- OpenWRT开发之——对C++的支持(解决库依赖问题)【转】
转自:https://my.oschina.net/hevakelcj/blog/411944 摘要: 本文尝试用C++来开发一个cpp-demo包 遇到打包库依赖的问题,分析打包过程并解决了这个问题 ...
- TAU调研咨询
厦门宇能科技有限公司 GPRS-RTU/DTU.3/4G路由器.无线远程抄表.管网监控 咨询电话:0592-5710250 2017-07-04 9:36:16 您好,欢迎光临.请问有什么可以帮到您? ...