2016-04-06 12 views
2

Ich weiß, das klingt vielleicht albern, aber ich möchte wissen, ob es einen Weg wie diesen gibt.If/else in python

Mein Code ist:

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

Was ich will, ist zu tun,

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

Antwort

4

Natürlich.

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

Das Wort, das Sie suchen sind, ist ternary operator.

+0

wenn amountPaid.group (1): shelfFile [str (Name) + 'Balance'] + = Schwimmer (amountPaid.group (2)) anderes: shelfFile [str (Name) + 'Balance'] - = float (amountPaid.group (2)). Dies ist der eigentliche Code, also wenn ich das oben tun würde, würde das eine große Linie erzeugen. –

+0

'shelfFile [str (Name) + 'balance'] + = float (amountPaid.group (2)) wenn amountPaid.group (1) else shelfFile [str (Name) + 'balance'] - = float (amountPaid.group (2)) ':) – Signal

+0

Ist es möglich, die Länge des Codes zu reduzieren? –

1

Sie können diese mit den ternären Zustand tun Betreiber:

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

Wenn a == 1 wahr ist, dann wird ein das Ergebnis a + b halten, sonst wird es das Ergebnis von a - b

Demo halten:

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

wenn amountPaid.group (1): shelfFile [str (Name) + 'Balance'] + = Schwimmer (amountPaid.group (2)) anderes: shelfFile [str (name) + 'balance'] - = float (amountPaid.group (2)). Dies ist der eigentliche Code, also wenn ich das oben tun würde, würde das eine große Linie erzeugen. –

+0

Danke für die Ideen :) –

+0

@DeepakKrishna Gern geschehen. Vergessen Sie nicht, die Antwort zu akzeptieren, die Ihnen geholfen hat, da sie anderen Lesern anzeigt, was Sie hilfreich fanden. – idjaw

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

ist die vernünftige und angemessene Vorgehensweise der Person, so ist hier die weniger gesund Version, die mehr wählt direkt den Betrieb, nicht der komplette Ausdruck einschließlich Operanden, die Beseitigung der Notwendigkeit, die Operanden an zwei Orten zu wiederholen:

from operator import iadd, isub # Like to += and -=, but you need to assign return 

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

oder sogar prägnanter/verrückt mit bool s zu indizieren eine tuple:

a = (isub, iadd)[a == 1](a, b) 

Um klar zu sein, das ist albern. Verwenden Sie einfach a = a+b if a==1 else a-b.

+0

Danke, das gab mir viele Möglichkeiten, in Zukunft zu verwenden :) –

Verwandte Themen