【趣学Python算法100例】个人所得税
问题描述
编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。个人所得税征收办法如下:
起征点为2000元。
- 不超过500元的部分,征收5%。
- 超过500~2000元的部分,征收10%。
- 超过2000~5000元的部分,征收15%。
- 超过5000~20000元的部分,征收20%。
- 超过20000~40000元的部分,征收25%。
- 超过40000~60000元的部分,征收30%。
- 超过60000~80000元的部分,征收35%。
- 超过80000~100000元的部分,征收40%。
- 超过100000元以上的,征收45%。
解决思路
根据上述代码,计算个人所得税的解决思路可以分为几个主要步骤:
解决思路:
- 定义起征点和税率表:
- 设定一个常量
TAXBASE
为 2000,表示个人所得税的起征点。 - 创建一个列表
TaxTable
,包含多个元组,每个元组代表一个税率区间。每个元组由三个元素组成:起始点、截止点和对应的税率。
- 设定一个常量
- 获取用户输入:
- 提示用户输入个人收入金额,将其存储在变量
profit
中。
- 提示用户输入个人收入金额,将其存储在变量
- 计算应纳税收入:
- 从输入的收入中减去起征点
TAXBASE
,得到应纳税收入。如果计算后的收入小于等于0,直接返回税额为0。
- 从输入的收入中减去起征点
- 逐步计算税额:
- 遍历税率表
TaxTable
,对于每个税率区间:- 检查应纳税收入是否超过当前区间的起始点。
- 计算在当前税率区间内的应税收入,即在当前区间的起始点和截止点之间的部分,使用
min
函数确保不超过应纳税收入。 - 根据当前区间的税率计算税额,并将其累加到总税额中。
- 更新剩余的应纳税收入。
- 打印当前征税区间的信息,包括范围、在该区间内缴税的金额及超出该范围的剩余收入。
- 遍历税率表
- 输出结果:
- 在计算完成后,返回总的税额,并打印最终的个人所得税金额。
完整的程序
根据上面的分析,编写程序如下:
TAXBASE = 2000
# 分为9个阶段,每个阶段包含起始点、截止点和税率
TaxTable = [
(0, 500, 0.05),
(500, 2000, 0.10),
(2000, 5000, 0.15),
(5000, 20000, 0.20),
(20000, 40000, 0.25),
(40000, 60000, 0.30),
(60000, 80000, 0.35),
(80000, 100000, 0.40),
(100000, float('inf'), 0.45) # 用float('inf')表示无穷大
]
# 计算税收
def calculate_tax(profit):
tax = 0.0
profit -= TAXBASE # 超过个税起征点的收入
if profit <= 0:
return tax # 如果没有应纳税收入,直接返回
for start, end, rate in TaxTable:
if profit > start:
taxable_income = min(profit, end) - start
tax += taxable_income * rate
profit -= taxable_income
print(f"征税范围:{start:6}~{end:6} 该范围内缴税金额:{taxable_income * rate:6.2f} 超出该范围的金额:{profit:.2f}")
if profit <= 0:
break # 如果利润不足以再征税,退出循环
return tax
if __name__ == '__main__':
profit = float(input("请输入个人收入金额: "))
tax = calculate_tax(profit)
print(f"您的个人所得税为 {tax:.2f}")
行结果
在vscode下运行程序,屏幕上提示“请输入个人收入金额:”,输入5678,运行结果如下图所示。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 攻城狮小林
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果