2017-06-01 3 views
1

Hier ist das Beispiel:Ist es möglich, mehrere Zuweisungen mit einem bedingten Ausdruck vorzunehmen?

age = 10 
reject = False 

if age < 10: 
    st = 'Kid' 
    reject = True 

else: 
    st='Adult' 
    reject = False 

Ist es möglich? Etwas wie:

statement1:statement2 if age < 10 else statement3:statment4 

Ich habe immer noch Probleme mit dem Verständnis ternärer Operator in Python.

+0

Die angeforderte Syntax ist nicht möglich. Die Bedingungsausdrucksyntax ist 'true-expression if Bedingung else false-expression'. –

+0

@TerryJanReedy Nun, Sie können tatsächlich Namen mit Ausdrücken binden. 'globals() .__ setitem __ ('st', 'Kind')' zum Beispiel. – wim

+0

Verwenden Sie einfach die if-else-Anweisung. Es gibt keinen guten Grund, zu versuchen, Ihren Code in eine einzige Zeile zu stopfen, besonders dann, wenn er eine seltsame, unidiomatische Verwendung von Sprachkonstrukten erfordert, die das nicht erreichen sollen. –

Antwort

1

Sie es so tun könnte:

st, reject = ('Kid', True) if age < 10 else ('Adult', False) 
+0

gibt es einen anderen möglichen Weg ??? unter der Annahme, dass, wenn Kind <20, wenn weniger als 20 NUR zuweisen "abgelehnt = Wahr" und für Erwachsene st = "Erwachsene" und Abgelehnt = Falsch – metazord

+0

andere als st, ablehnen = (Keine, Wahr) wenn Alter <20 sonst ('Erwachsene ", Falsch) ich kann mir nichts von meinem Kopf denken – rammelmueller

5

Zuweisungsanweisungen unterstützen multiple targets:

>>> age = 10 
>>> st, reject = ('Kid', True) if age < 10 else ('Adult', False) 
>>> st, reject 
('Adult', False) 
+0

gibt es einen anderen möglichen Weg ??? angenommen, dass, wenn Kind <20, wenn weniger als 20 NUR zuweisen "abgelehnt = Wahr" und für Erwachsene zuweisen st = "Erwachsene" und Abgelehnt = Falsch – metazord

+1

Technisch möglich, aber hässlich. Verwenden Sie einfach eine if-Anweisung und hören Sie auf, so ausgefallen zu sein. – wim

0

Sie verwenden können:

st, reject = ('Kid', True) if age < 10 else ('Adult', False) 

Wenn Sie:

var1, var2 = 1, 2 

Sie tun das gleiche wie:

var1 = 1 
var2 = 2 

Und wenn Sie verwenden:

var1 = 1 if x == y else 2 

Ihr tun das gleiche wie:

if x == y: 
    var1 = 1 
else: 
    var1 = 2 

Wenn Sie mit dieser wollen definieren Vielfache Variablen müssen Sie ein Tupel () mit den Variablen machen, und sie werden entpackt werden.

Verwandte Themen