2016-10-22 36 views
0

這是我的代碼來檢查getBonus()的值是否超過5000後,我使用lambda將100添加到numder。可以說,如果我必須使用lambda方法,我如何使用條件語句(如if-else)來檢查值是大於還是小於5000?使用lambda與條件語句

bonus=1000 
    getBonus= lambda x:x+100 
    if x>5000: 
    return x+bonus*2 
    else: 
    return x+bonus 
    print getBonus(3000) 
    print getBonus(6000) 

口口聲聲說是迴歸了,我認爲它指的是lambda表達式

+4

哪裏的功能定義? –

+0

最初分配的「x」在哪裏? – blacksite

+0

代碼是不好的(也許這就是爲什麼OP要求幫助,所以總是要求顯示一些代碼,我喜歡這樣),但解釋是正確的。畢竟不是很糟糕。 –

回答

3

你的代碼不正確,但我發現這個想法的功能。

這是可能的拉姆達又有點扭曲(因爲你要測試X對5000倒是100使用三元的關鍵在於:

bonus=1000 
getBonus = lambda x: x+100+bonus*2 if x>4900 else x+100+bonus 
print(getBonus(3000)) 
print(getBonus(4950)) 
print(getBonus(4900)) 
print(getBonus(6000)) 

結果:

4100 
7050 
6000 
8100 

我認爲我得到了公式& test OK。測試表明,但是我懷疑這意味着創建一個lambda表達式不是一個好主意,除非你不能這樣做。

編輯:證明這是一個壞主意:我不得不修復lambda,因爲它是錯誤的(5100 => 4900)。這是普通的函數定義。我寧願去那個:

def getBonus(x): 
    x += 100 
    return x+bonus*2 if x>5000 else x+bonus 
+0

感謝上帝,這是我正在尋找,歡呼! –

+0

我的心靈感應技能再次運作:) –

+0

也許增加一個*常規*函數定義。 – wwii