python 學習記錄-根據提成計算獎金


題目:企業發放的獎金根據利潤提成。利潤低於或等於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%提成,從鍵盤輸入當月利潤,求應發獎金數?

相關函數:

1、range()----創建應整數列表,常用於for循環

語法:range(start,stop[,step])

參數說明:

start:計數從start開始,默認是從0開始;stop:計數到stop結束,但不包括stop。如range(0,4)是[0,1,2,3]  ;step:步長,默認是1。如range(0,6)等價於range(0,6,1)

2、sum()-----求和函數

語法:sum(iterable[,start])

參數說明:

iterable:可迭代對象,如列表、元祖、集合; start:指定相加的參數,如果沒有設置這個值,默認是0;

3、map()

語法:map(function,iterable,...)

需傳入一個函數,這個函數可以是內置的,也可以自定義或匿名函數;第二個參數時可迭代對象,如列表、字符串等。返回的是一個map對象,注意不是列表不能直接輸出,可以通過for循環或者list()來顯示。

4、lambda()----匿名函數

語法:lambda arg1,arg2,。。。,argN:expression

5、zip()---將可迭代的對象作為參數,將對象中對應的元素打包成一個個元祖,然后返回有這些元祖組成的對象,我們可用list()轉換來輸出列表

語法:zip(iterable,。。。)

 

代碼:

 

w=int(input('輸入利潤: '))
p=[1000000,600000,400000,200000,100000,0]
t=[0.01,0.015,0.03,0.05,0.075,0.1]
r=[400000,200000,200000,100000,100000]
for j in range(len(p)):
    if w >p[j]:
        v1=(w-p[j])*t[j]
        print(v1)
        p_new=p[j+1:6]
        r_new=r[j:5]
        v2=sum(map(lambda x,y:x*y,zip(p_new,r_new)))
        print(v2)
        print(v1+v2)
        break

運行提示:

    v2=sum(map(lambda x,y:x*y,zip(p_new,r_new)))
TypeError: <lambda>() missing 1 required positional argument: 'y'

但若改為v2=sum(map(lambda(x,y):x*y,zip(p_new,r_new)))也不行,

會提示:    v2=sum(map(lambda (x,y):x*y,zip(p_new,r_new)))
                      ^
SyntaxError: invalid syntax

 

最后寫了一個簡單易懂的

w=int(input('請輸入當月利潤,(單位:萬元):'))
p=[1000000,600000,400000,200000,100000,0]
t=[0.01,0.015,0.03,0.05,0.075,0.1]
r=0
for j in range(len(p)):
    if w>p[j]:
        r+=(w-p[j])*t[j]
        w=p[j]
print('獎金:',r)

 


免責聲明!

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



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