每日一练 no.2

版权声明:本文为博主原创文章,如若转载请注明出处 https://blog.csdn.net/tonydz0523/article/details/83476044

问题:

简述:企业发放的奖金根据利润提成。利润(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%提成。

解答:

获取到利润数后先判断在那个利润范围,然后再计算
解法一:

l=int(input('利润:'))
arr=[1000000,600000,400000,200000,100000,0]
rat=[0.01,0.015,0.03,0.05,0.075,0.1]
r=0
for idx in range(0,6):
    if l>arr[idx]:
        r+=(l-arr[idx])*rat[idx]
        l=arr[idx]
print(r)

解法二:

l=int(input('利润:'))
arr=[0, 100000, 200000, 400000, 600000, 1000000]
rat=[0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
bonus, i = 0, 0
while i>=0:
    if l>arr[i+1]:
        bonus += (arr[i+1]-arr[i])*rat[i]
    else:
        bonus += (l-arr[i])*rat[i]
        break
    i+=1
print(bonus)

解法三:

import numpy as np
l=int(input('利润:'))
arr=[0, 100000, 200000, 400000, 600000, 1000000]
rat=[0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
diff = np.array(list(map(lambda x,y,z:(x-y)*z, arr[1:], arr[:-1], rat[:-1])))
i = 0
while i>=0:
    if l<arr[i+1]:
        break
    i+=1
bonus = diff[:i].sum() + (l-arr[i])*rat[i]
print(bonus)

猜你喜欢

转载自blog.csdn.net/tonydz0523/article/details/83476044