1. 程式人生 > >每日一練 no.2

每日一練 no.2

問題:

簡述:企業發放的獎金根據利潤提成。利潤(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)