【Python練習題 002】企業發放的獎金根據利潤提成。利潤(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,求應發放獎金總數?
好吧,學渣如我,能想到的就是老老實實寫 if...elif...elif... 的循環函數,我自己看着都覺得累啊……
I = float(input("請輸入當月利潤,單位為萬元:"))
if I <= 10:
bns = 10 * 0.1
elif 10 < I <= 20:
bns = 10 * 0.1 + (I-10) * 0.075
elif 20 < I <= 40:
bns = 10 * 0.1 + 10 * 0.075 + (I-20) * 0.05
elif 40 < I <= 60:
bns = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + (I-40) * 0.03
elif 60 < I <= 100:
bns = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (I-60) * 0.015
elif I > 100:
bns = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (I-100) * 0.015
print(bns,'萬元')
不過后來,查了下別人的做法,果然清新很多啊:
I = float(input("請輸入當月利潤,單位為萬元:"))
bns = 0 #初始化獎金總數
cat = [100, 60, 40, 20, 10, 0] #金額分6檔
pct = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] #每檔的提成比例
for i in range(6):
if I > cat[i]:
I = I - cat[i] #注意:刨掉檔位金額后,應將值重新賦給I,每一檔位分開計算
bns = bns + I * pct[i] #每一檔位的獎金累計相加
print('當月應發放獎金總數為%s萬元' % bns)
倒也不難理解:從高到低檢查利潤是否超過設置好的檔位,超了就先計算這部分獎金,剩下的再繼續逐級檢查檔位,累積計算獎金就可以了。
唉,我數學真的很爛……
PS:為啥代碼框里最后一行總是顯示異常呢……原來是模板的問題。換了個模板,代碼框顯示就正常了~~
++++++++++++++++++++++++++++++++++++++++++++++
