case1:
方法一:分界轴定位
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。
#定义一个函数differential(),并利用input向这个函数中传入当日订单数/利润数...
def differential(i):
arr = [1000000,600000,400000,200000,100000,0] #倒序定位分界数轴,方便定位
rat = [0.01,0.015,0.03,0.05,0.075,0.1] #每个级别的佣金也泪如数组
r = 0 #订单数/利润数,初始值为0
for idx in range(0, 6): #级别=arr的数组里的元素个数
if i > arr[idx]: #判断参数所在分界数轴的区间
r += (i - arr[idx]) * rat[idx] #累计计算每个区间的佣金
print((i - arr[idx]) * rat[idx], i)#打印佣金数和对应区间
i = arr[idx]#幅值i
print(r) #return(r)不会输出最后的值,只是可以返回,改成print可以直接输出多个区间的值
n = int(input('净利润:'))
differential(n) #n=函数中的i
'''
Q:为什么要倒序定位分界数轴???
A:有某个人的当日订单数是200单,那我们怎么分析呢,是不是先判断这个200是在那个等级区间中,
我们发现他在100-300这个区间,这时我们是不是开始计算在100-300这个区间应该分佣多少。
是不是200-100=100单,这样就可以算得这个区间的分佣为100*0.8=80元,
而为什么是减100呢,是不是这100又是在区间0-100里面。
然后根据这个区间来判断,这时我们是不是又可以算得0-100这个区间分佣金额为100*0.5=50元。
这样我们就得到了总分佣为80+50=130元,
所以我们是倒序定位分界数轴的,也就是先判断高级别,再判断低级别,现在应该明白了吧。
'''
方法二,if elif循环
L=float(input('请输入当月利润L(万元):'))
if L <= 10:
bouns = L * 0.1
elif L < 20:
bouns = 10 * 0.1 + (L-10) * 0.075
elif L < 40:
bouns = 10 * 0.1 + 10 * 0.075 + (L-20) * 0.05
elif L < 60:
bouns = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (L-40) * 0.03
elif L < 100:
bouns = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (L-60) * 0.015
else:
bouns = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (L-100)*0.01
print(bouns)
case2:个人佣金
下面是佣金分佣级别,以及每个级别的订单数量和具体佣金金额。
级别 | 订单数 | 佣金 |
一级 | 1-100 | 0.5元 |
二级 | 101-300 | 0.8元 |
三级 | 301-600 | 1.1元 |
四级 | 601-1000 | 1.3元 |
五级 | 1001-2000 | 1.5元 |
六级 | 2001-5000 | 1.7元 |
七级 | 5001-10000 | 1.8元 |
八级 | 10001-20000 | 1.9 |
九级 | 20000以上 | 2元 |
#!/usr/bin/python3
def differential(i):
arr = [20000, 10000, 5000, 2000, 1000, 600, 300, 100, 0]
rat = [2, 1.9, 1.8, 1.7, 1.5, 1.3, 1.1, 0.8, 0.5]
r = 0
for idx in range(0, 9):
if i > arr[idx]:
r += (i - arr[idx]) * rat[idx]
print((i - arr[idx]) * rat[idx], i)
i = arr[idx]
print(r)
n = int(input('当日订单数:'))
differential(n)
参考:
Python数轴分界、定位法实现级差分佣_python数轴分界与定位-CSDN博客
【Python】企业发放的奖金根据利润提成_6-5 企业发放的奖金根据利润(p)提成。利润低于或等于 100 000 元,奖金可提 10-CSDN博客
https://blog.csdn.net/AKK188888881/article/details/104360135/?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4--blog-118946182.235^v43^pc_blog_bottom_relevance_base4&spm=1001.2101.3001.4242.3&utm_relevant_index=5