2017-04-04 1 views
6

Ich versuche, zwei Variablen von einem Eingang wie folgt zu erhalten:Machen Sie eine Eingabe optional in Python

x, y = input().split() 
print(x, y) 

Aber ich will die y Variable optional machen, so dass, wenn der Benutzer nur x Eingänge würde es nur drucken dieser Wert. Ich bekomme eine ValueError, wenn nur das X-Argument eingefügt.

Wer weiß, wie man das macht?

Antwort

2

Da dies Python 3 ist, hier zwei Zeilen mit erweiterten iterierbaren Entpacken.

x, *y = input().split() 
y = y[0] if y else '' 
+0

Danke! Ich verstehe nicht ganz, was das tut, aber es funktionierte wie ein Zauber. – Jackpy

1

Sie können Ihre Variablen nicht sofort entpacken, Sie müssen zuerst die Größe des zurückgegebenen list Objekts überprüfen. Wenn die Größe nicht 2 ist, füllen Sie einfach mit Standard, sonst gehen Sie mit dem Entpacken fort.

toks = input().split() 
if len(toks)==2: 
    x,y = toks 
else: 
    x = toks[0] 
    y = "default" 

print(x,y) 
4

Sie könnten etwas anderes split zu 'fälschen' optional Eingabe verwenden. Mit str.partition Sie nur das erste und das letzte Element des resultierenden Tupel fangen konnte:

x, _, y = input().partition(' ') 

und dann print entsprechend:

print(x, y if y else '') 

x enthält den ersten Wert der Eingabezeichenfolge (nachdem es auf gespaltet wird ' ', während y den Rest enthält.

+0

'x, y = input() Partition (‘ ‚) [. :: 2] 'wie im vorgeschlagenen dupe http://stackoverflow.com/questions/749070/partial-list-unpack-in-python –

+0

@Chris_Rands würde ich persönlich mit dem Wegwerfen bleiben, anstatt mit einer Scheibe zu gehen, es lohnt sich meiner Ansicht nach nicht t mindestens. (ps: Gehämmert, danke für das Aufzeigen!) –

0
y  = None 
x  = input() 

if ' ' in x: 
    x, y = x.split() 

print(x, y) 
+0

in Betracht ziehen, Ihrem Code eine Erklärung zu geben – arghtype

0

können Sie gehen:

x, y = (list(input().split()) + [None]*2)[:2] 
print(x, y if y else '') 
0

Eine Einzeiler Art und Weise, dies zu tun:

x, y, *z = input().split() + [''] 
print(x, y) 
+0

Aber dann erhalten Sie einen Fehler "zu viele Werte zum Entpacken", wenn der Benutzer zwei Werte eingibt. – Kevin

+0

Danke für die Eingabe, ich habe den Code aktualisiert. – Neil

Verwandte Themen