最近在学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 - 计算个人所得税的更多相关文章

  1. 【Python】个人所得税

    以月收入1w,举例计算个税: #!/usr/bin/python #-*- encoding:UTF-8 -*- #========================================== ...

  2. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  3. Python计算斗牛游戏的概率

    Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...

  4. 利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

  5. 用Python计算幂的两种方法,非递归和递归法

    用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...

  6. Python计算分位数

    Python计算分位数    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gdkyxy2013/article/details/80911514 ...

  7. python 计算校验和

    校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段.其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的. 使用python计算校验和时记住做截断就可以了. 这里 ...

  8. 为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死

    为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死

  9. python计算时间差的方法

    本文实例讲述了python计算时间差的方法.分享给大家供大家参考.具体分析如下: 1.问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2.解决方法: 标准模块date ...

随机推荐

  1. ByteBuffer的allocate与allocateDirect2013-01-11

    在Java中当我们要对数据进行更底层的操作时,通常是操作数据的字节(byte)形式,这时常常会用到ByteBuffer这样一个类.ByteBuffer提供了两种静态实例方式:   public sta ...

  2. 织梦dedecms搜索页加上序列号autoindex

    在我们做织梦搜索页模板的时候经常会使用到autoindex标签.那么怎么才能实现搜索页可以使用呢?下面给大家分享下解决方法: 打开文件:include/arc.searchview.class.php ...

  3. 转头条:阿里p7架构师:三年经验应该具备什么样的技能?

    问:工作中,有时候实现一个功能,会去看有没有现成的轮子可用.对于重复造轮子与改造轮子有什么看法? 答:一定会的,其实这也是一个提高技术能力的方法,比如今天想做个日期转换的功能,JDK8有日期的新特性就 ...

  4. jsp中的EL和JSTL的关系

    对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合E ...

  5. TensorFlow分布式实践

    大数据时代,基于单机的建模很难满足企业不断增长的数据量级的需求,开发者需要使用分布式的开发方式,在集群上进行建模.而单机和分布式的开发代码有一定的区别,本文就将为开发者们介绍,基于TensorFlow ...

  6. 个推数据统计产品(个数)iOS集成实践

    最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据.这次我们尝试使用的是个推(之前专门做消息推送的)旗下新推出的产品“个数·应用统计”,根据官方的说法,个推的数据统计产品通过专业的 ...

  7. Hadoop生态圈-zookeeper本地搭建以及常用命令介绍

    Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...

  8. 高级篇 KZ002.反射读取注解[未封装]

    创建自定义注解 package com.hanpang.java; /** * 注解说明: 方法的文档注释 * * @Author: 胖先生 * @Create: 2016-04-27 10:29 * ...

  9. bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以 ...

  10. Web性能优化系列(1):Web性能优化分析

    本文由 伯乐在线 - 鸭梨山大 翻译,sunbiaobiao 校稿.未经许可,禁止转载!英文出处:gokulkrishh.github.io.欢迎加入翻译小组. 如果你的网站在1000ms内加载完成, ...