2011-10-19 4 views
1

変数に数学演算子を割り当てることは可能です。私は別の演算子で、まったく同じコードを繰り返していますかpython:変数を演算子(+、/、*、 - )と等しくする

これは、私が現在持っているものであるだけでサンプルが(今でそれを入力したので、単純なエラーについて心配しないで)

if image == "lighten": 
    red_channel = red_channel + 50 
else: // image is darken 
    red_channel = red_channel - 50 

予告。限り、

if (image == "lighten"): 
    operator = + 
else: 
    operator = - 

red_channel = red_channel operator 50 

答えて

6
import operator 
if (image == 'lighten'): 
    op = operator.add 
else: 
    op = operator.sub 

red_channel = op(red_channel, 50) 

それとも、あなたが可能な操作の数を持っている場合、

op = { 
    'lighten':operator.add, 
    'darken':operator.sub, 
    ... 
    } 
red_channel = op[image](red_channel,50) 
+1

+1。 –

1

別のオプションではなく、その長さに行く: は、それがこのような何かを達成することが可能です正の50または負の50のいずれかを行っているだけです:

red_channel = red_channel + (flag * 50) 

変数 "flag"は次のとおりです。 1または-1のいずれかです。あなたに50または50を与えます。これは、この小さな例のために多くのコードを保存することはありませんが、便利なときに使用します。

+1

スマートメイト、私はそれが好きです:) – dgamma3

+0

通常、フラグはブール値なので、 'flag'を使わないことをお勧めします。 –

2

私は、インライン式のように:直接OPの質問に答えると、便利な機能に私を啓発用

red_channel += 50 if image == 'lighten' else -50 
関連する問題