读代码3-数轴分界,定位

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

Python 练习实例2 | 菜鸟教程 (runoob.com)

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值