2016-10-24 2 views
1

So habe ich diesen Code, der zwei Eingänge erlaubt:Wie kann man einen einzelnen Eingang in einem "Eingang mit zwei Eingängen" zulassen?

a, b = input("Enter a command: ").split() 
if(a == 'hello'): 
    print("Hi") 
elif(a == 'color' and b == '3'): 
    print("Changing color to 3") 
    #example, doesn't actually change color 
elif(a == 'color' and b == '2'): 
    print("Changing color to 2") 
else: 
    print("invalid command") 

und die "Farbe 2"/"Farbe 3" Ding funktioniert. Doch „Hallo“ eingeben, wie es ist ein einziges Wort, gibt mir diese Fehlermeldung:

ValueError: not enough values to unpack (expected 2, got 1) 

Also, wie kann ich um/beheben diese bekommen? Ich hoffe, das war richtig formatiert und alles, danke, dass Sie sich die Zeit genommen haben, die Frage zu betrachten. Ich bin ziemlich neu in Python, es tut mir leid, wenn es eine einfache Lösung ist.

Antwort

5

Wenn Sie im Voraus wissen nicht, wie viele Argumente dort auf den Befehl sind, dann können Sie nicht dieses Konstrukt verwenden:

a, b = input("Enter a command: ").split() 

könnten Sie versuchen, wie diese statt:

a, _, b = input("Enter a command: ").partition(' ') 

Oder, ich schlage vor, ausführlichere Variablennamen zu verwenden:

command, separator, arguments = input("Enter a command: ").partition(' ') 

Es funktioniert für eine beliebige Anzahl von Argumenten nach das erste 'Befehlswort', weil str.partition garantiert ein 3-Tupel zurückgibt.

+1

Können Sie erklären, warum Ihre Lösungen funktionieren? Ich bin nicht hier, um einen 76K-Rep-Benutzer zu erziehen, aber die Antworten sollten erklärt werden: P –

+0

Eine Dok.-Referenz hinzugefügt. – wim

+0

Danke, das hat funktioniert! – Brendan

Verwandte Themen