python3練習100題——002


因為特殊原因,昨天沒有做題。今天繼續~

原題鏈接:http://www.runoob.com/python/python-exercise-example2.html

題目:

企業發放的獎金根據利潤提成。利潤(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,求應發放獎金總數?

我的代碼:

def cal(i):
    if i <=100000:
        bonus=i*0.1
    elif  100000<i<=200000:
        bonus=10000+(i-100000)*0.075
    elif 200000<i<=400000:
        bonus=10000+7500+(i-200000)*0.05
    elif 400001<i<=600000:
        bonus=10000+7500+10000+(i-400000)*0.03
    elif 600001<i<=1000000:
        bonus=10000+7500+10000+6000+(i-600000)*0.015
    elif i>1000000:
        bonus=10000+7500+10000+6000+6000+(i-1000000)*0.01    #代碼繁瑣,而且每一個階段獲得的利潤最大值都要手動去算,很麻煩
    print(bonus)

思考:

看到了練習的答案,發現可以用for循環來實現,減少了要自己手動輸入和計算的工作量!所以每個階段的分界和利潤比,都以可以迭代的列表的形式寫入函數中,具體看下面。。。

def cal2(i):
    profit=[1000000,600000,400000,200000,100000,0]
    rate = [0.01,0.015,0.03,0.05,0.075,0.1]        #同樣的index,profit是該rate的下限,便於接下來由大到小迭代
    bonus=0
    for x in range(0,6):
        if i>profit[x]:                    #先判斷i屬於哪個級別開始算
            bonus += (i-profit[x])*rate[x]
            i=profit[x]                    #把那個級別的下限賦值給i,繼續for循環 print(bonus)

利用了列表可以迭代的特性,真的方便了很多~本來還想過用字典一一對應地存profit和rate,但是字典是沒有順序的,不能用於這樣由大到小的循環判斷。


免責聲明!

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



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