Python練習題 002:獎金計算


【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:為啥代碼框里最后一行總是顯示異常呢……原來是模板的問題。換了個模板,代碼框顯示就正常了~~

 

++++++++++++++++++++++++++++++++++++++++++++++

題目出處:編程語言入門經典100例【Python版】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM