2016-04-06 26 views
2

içinde/olursa, bunun aptalca gelebilir olduğunu biliyorum ama kullanmak için böyle bir yol olup olmadığını bilmek istiyorum.Eğer python

Benim kodudur: Elbette

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

Ne ben yapmak istiyorum,

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

cevap

4

.

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

Aradığınız kelime ternary operator.

+0

halinde amountPaid.group (1): shelfFile [str (ad) 'bakiyesi' +] + = şamandıra (amountPaid.group (2)) başka bir : shelfFile [str (ad) 'bakiyesi' +] - = şamandıra (amountPaid.group (2)). Bu gerçek koddur, bu yüzden eğer büyük bir çizgi oluşturacak şekilde yaparsam. –

+0

'shelfFile [str (name) + 'bakiye'] + = float (miktarPaid.group (2)) Eğer miktarPaid.group (1) else shelfFile [str (name) + 'balance'] - = float (miktarPaid.group (2)) ':) – Signal

+0

Kodun uzunluğunu azaltmak mümkün mü? –

1

Bu kullanarak üçlü koşul operatörü yapabilirsiniz: a == 1 doğrudur

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

, o zaman bir o a - b

Demo sonucunu yapacak başka a + b sonucu yapacak:

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

halinde amountPaid.group (1): shelfFile [str (ad) 'bakiyesi' +] + = şamandıra (amountPaid.group (2)) başka bir : shelfFile [str (ad) 'bakiyesi' +] - = şamandıra (amountPaid.group (2)). Bu gerçek koddur, bu yüzden eğer büyük bir çizgi oluşturacak şekilde yaparsam. –

+0

Fikirler için teşekkürler :) –

+0

@DeepakKrishna Rica ederim. Yardımcı olduğunuz cevabı diğer okuyuculara da yardımcı olduğunu düşündüğünüz cevabı kabul etmeyi unutmayın. – idjaw

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

işte daha doğrudan operasyonu değil, tam işlenen dahil anlatım, iki yerde işlenen tekrarlamak ihtiyacını ortadan kaldırarak seçer az aklı başında versiyonu, aklı başında ve makul kişinin yaklaşımdır:

a = (isub, iadd)[a == 1](a, b) 
01: endeksi bir tuple- bool s kullanarak
from operator import iadd, isub # Like to += and -=, but you need to assign return 

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

hatta daha özlü/deli

Açıkçası, bu aptalca. Sadece a = a+b if a==1 else a-b kullanın.

+0

Teşekkürler, bu bana gelecekte kullanmak için birçok seçenek verdi :) –