2016-10-22 26 views
0

これは、lambdaを使用してnumderに100を加えた後にgetBonus()の値が5000より大きいかどうかを調べるコードです。ラムダメソッドを使用する必要がある場合、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) 

は、私はそれがラムダ式

+4

関数の定義はどこですか? –

+0

最初に 'x'はどこに割り当てられていますか? – blacksite

+0

コードが悪い(多分、OPが助けを求めているので、いつもいくつかのコードを表示するように頼んでいますが、私はそれが好きですが)説明は正しいです。結局、それほど悪くない。 –

答えて

3

あなたのコードが間違っていますが、私はアイデアを取得していますを参照していると仮定関数の外にあります。

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 

これはラムダで可能ですが、あなたは5000に対してxをテストする必要がなく、三元を使用して100を追加したので、少しは(ねじれが鍵テストはそうだと思うが、私が疑問を抱いているという事実は、あなたがそうでなければラムダを作ることは非常に良い考えではないということを意味する。

編集:それは悪い考えです。ラムダは間違っていたので修正する必要がありました(5100 => 4900)。ここには正規関数の定義があります。私はむしろその1つに行きます:

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

これは私が探しているものです、歓声! –

+0

職場で私のテレパシー技能をもう一度:) –

+0

おそらく、* regular *関数定義を追加します。 – wwii