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