2017-05-13 2 views
1

Gibt es eine Möglichkeit, den ternären Operator in Verbindung mit einem Eingang zu verwenden, um einer Variablen auf einmal eine Variable zuzuordnen?Python-Einzeiler mit Eingabe und bedingt?

Die ausführlichere Weise:

# assume this happened a while back. 
myVariable = "user: " 

# I'd like to get these two lines down to one. 
myInputResult = input('Enter something, or just hit Enter for the default: ') 
myVariable += "the user typed: " + myInputResult if myInputResult != '' else 'the user did not type anything' 

Was ich muß in der Lage sein zu tun, den Wert aus der ohne ersten input() Funktion verweist sie auf einen Variable zuweisen.

Ich habe eine Technik, die in anderen Sprachen zu sehen, aber es sieht nicht so aus unterstützt Python den Wert Rückkehr zugewiesen, wenn Sie die Zuordnung wie eine Variable behandeln:

myVariable += "the user typed " + x if (x = input("Enter something or nothing: ")) != '' else "the user did not type anything" 

funktioniert nicht.

Beachten Sie, dass selbst wenn input einen Standardwert zurückgeben kann, dies nicht ausreicht, da sich der statische Text unterscheidet, wenn der Benutzer nichts eingibt.

Die Variable-Methode ist in Ordnung, aber ich bin nur auf der Suche nach einer prägnanten Methode zum Schreiben des Codes, wenn es möglich ist.

Python 3, btw.

+2

... aber warum versuchen Sie Tastenanschläge zu speichern? – tiwo

Antwort

0

Python hat keine Inline-Zuweisung. Sie könnten eine Funktion schreiben, die eine Transformation gilt Werte truthy und falsy Werte wie die leere Zeichenkette unverändert (dies ist die „Lite“ -Version einer Optional.map -Typ-Funktion) verlassen:

def map_true(fn, value): 
    return value and fn(value) 

und verwenden Sie es wie folgt:

aber das ist keine große Verbesserung.

Verwandte Themen