練習題2 的網址:
Example-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%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
思路
這道題目可以根據每個獎金髮放區間來分界,先分別定義兩個陣列,一個陣列是存放每個區間獎金的提成比例,記為rat
;另一個陣列是記錄每個發放區間的上邊界,表示當超過該邊界時候,直接利用上邊界乘以該區間的提成比例,例如對於在 10 萬元以下的這個區間,就是上邊界為 10 萬,然後超過後,該區間發放獎金就是100000*0.1
。
然後我們先考慮利潤超過 100 萬的情況,依次降低利潤,對應每種情況。
程式碼實現
def pay_award():
profit = 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 profit > arr[idx]:
# 當前區間的利潤
r += (profit - arr[idx]) * rat[idx]
print('current award=', (profit - arr[idx]) * rat[idx])
# 重置下一個區間起始獎金數量
profit = arr[idx]
return r
複製程式碼
簡單的測試例子:
# 利潤是 11000
淨利潤:11000
current award= 1100.0
award= 1100.0
# 利潤是 1100000 (110萬)
淨利潤:1100000
current award= 1000.0
current award= 6000.0
current award= 6000.0
current award= 10000.0
current award= 7500.0
current award= 10000.0
award= 40500.0
複製程式碼
原始碼在:
或者點選原文,也可以檢視原始碼。
歡迎關注我的微信公眾號--機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!