2016-04-06 10 views
2

これは愚かなことかもしれませんが、私はこのような使い方があるかどうかを知りたいと思います。if/else in python

私のコードは次のとおりです。

print(a (+=) if a==1 else (-=) b) 

は、私はそれがやりたいことは、もちろん

if a==1: 
    print(a+b) 
else: 
    print(a-b) 

答えて

4

です。

print(a+b if a==1 else a-b) 

あなたが探している言葉はternary operatorです。

+0

amountPaid.groupは、(1)場合: shelfFile [STR(名)+ 'バランス'] + =フロート(amountPaid.group(2))他 : shelfFile [STR(名)+ 'バランス'] - = float(amountPaid.group(2))。これは実際のコードなので、上記を行うと大きな行が生成されます。 –

+0

'shelfFile [str(name)+ 'balance'] + = float(amountPaid.group(2))もしamountPaid.group(1)ならばshelfFile [str(name)+ 'balance'] - = float (2)) ':) – Signal

+0

コードの長さを減らすことはできますか? –

1

あなたは三項条件演算子使用してこれを行うことができます。

a == 1がtrueの場合、それは a - b

デモの結果を保持する他、a + bの結果を保持する

a = a + b if a == 1 else a - b 

a = 4 
b = 2 

# a should equal to 2 
a = a + b if a == 1 else a - b 

a = 1 
b = 2 

# a should equal to 3 
a = a + b if a == 1 else a - b 
+0

の詳細を集中すべき –

+0

アイデアありがとう:) –

+0

@DeepakKrishnaよろしくお願いします。それが他の読者に役立つと分かったことを示すように、あなたを助けた答えを受け入れることを忘れないでください。 – idjaw

0
a = a+b if a==1 else a-b 

は正気と合理的な人のアプローチであるので、ここではより直接的に2つの場所でのオペランドを繰り返す必要がなくなり、操作、オペランドを含まない完全な表現を選択少ない健全なバージョンがあります:

a = (isub, iadd)[a == 1](a, b) 
01:索引 tuplebool Sを用い
from operator import iadd, isub # Like to += and -=, but you need to assign return 

a = (iadd if a == 1 else isub)(a, b) 

またはさらにより簡潔/非常識

明らかに、これは愚かです。ちょうどa = a+b if a==1 else a-bを使用してください。

+0

ありがとう、それは私に将来的に使用する多くのオプションを与えた:) –