个税计算
作者:互联网
问题描述
【个税计算】企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
问题分析
用if-
解决方法
-
用if-elif-else的方法,很常规的方法。就直接给代码。
l = int(input ('请输入l(万元):'))
if l <= 10:
x = l * 0.10
print (x)
elif l <= 20:
x = 10 *0.1 + (l - 10) * 0.075
print (x)
elif l <= 40:
x = 10 * 0.1 + 10 * 0.075 + (l - 20 ) * 0.05
print(x)
elif l <= 60:
x = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (l - 40) * 0.03
print(x)
elif l <= 100:
x = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (l - 60) * 0.15
print(x)
else:
x = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.15 + (l - 100)* 0.01
print(x)-
刚开始的时候是出现的这种错误,第一行当时写的是 l = input ('请输入l(万元):'),是因为input返回的是str型,不能和int型直接比较。所以要int(),将str转化为int。
-
-
用列表的方法,很巧妙的方法。借鉴的方法,越看越能感受到它的巧妙之处。
def getBonus_2(I):
I = I/10000 #简化运算
bonus = 0
rates = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
stra = [100, 60, 40, 20, 10, 0]
for i in range(len(rates)): # len(rates)= 6 i:0,1,2,3,4,5,
if(I > stra[i]):
bonus += (I - stra[i])*rates[i]
I = stra[i]
return bonus*10000
profit = eval(input("请输入利润值:"))
print("您所获的金额是{0:.0f}元".format(getBonus_2(profit)))定义两个列表rates,star。rates用来表示每一部分的提成的百分比,star表示不同阶段的利润的分界点。而且star与rates要一一对应。当输入65的时候:
65 < 100,继续向下比较,
65 > 60, bouns = ( 65 - 60) * 0.015, I = 60 ;
60 > 40 , bouns = (60 - 40) * 0.03 + ( 65 - 60) * 0.015, I = 40;
40 > 20 , bouns = (40 - 20 ) * 0.05 + (60 - 40) * 0.03 + ( 65 - 60) * 0.015, I = 20
20 > 10 , bouns = (20 - 10) * 0.075 + (40 - 20 ) * 0.05 + (60 - 40) * 0.03 + ( 65 - 60) * 0.015, I = 10
10 > 0 , bouns = (10 - 0) * 0.1 + (20 - 10) * 0.075 + (40 - 20 ) * 0.05 + (60 - 40) * 0.03 + ( 65 - 60) * 0.015, I = 0
大概过程就是这样。
标签:10,20,0.03,40,60,65,计算 来源: https://www.cnblogs.com/xidongdong594/p/16065315.html