分成列表写方便修改吧,阅读上确实没有层层分支清晰# 利润从大到小排,单位是万元
profits = [100, 60, 40, 20, 10, 0]
# 利润和提成都可以往上加元素
rates = [0.01 , 0.015, 0.03, 0.05, 0.075, 0.10]
if len(profits) != len(rates):
raise IndexError # 两个列表不同长度算法会失效,先报错
else:
pass # 防御性
def bonus_cal(profit):
"""根据利润计算奖金,跟所得税的超额累进同种形式"""
bonus = 0
for i in range(len(profits)):
# 开头确定利润的范围
if profit - profits[i] > 0:
bonus += (profit-profits[i])* rates[i] # 大于利润区域的部分
# 往后面奖金是固定的, 循环算完返回退出就是了
for j in range(i,len(profits)-1):
bonus += (profits[j]-profits[j+1]) * rates[j+1]
return bonus
else:
pass # 防御性
print("没有利润还想要啥自行车!!") # 利润<=0 的情况
|