2017-05-05 3 views
2

Ich versuche, die Namen mehrerer Spieler in einer for Schleife zu setzen, aber ich habe Schwierigkeiten damit, da die Eingabe nur eine einzelne Zeichenfolge als Argument akzeptiert. Was ich versuche zu tun, so etwas wie dieses:Eingabe, die mehrere Argumente behandeln kann

for i in range(len(game)): 
    game[i].set_name(input("Player ", i, ": ")) 

Wo game ist ein Array von Objekten. Ich frage mich, ob es einen Weg gibt, dies in einem einzigen Liner zu tun.

+0

Es ist nicht klar, was Ihre Frage ist .... –

+0

Grundsätzlich möchte ich die Benutzer mit 'Player 1 aufgefordert:', 'Player 2:' on Die Kommandozeile kann ich aber nicht machen, weil 'input' nur ein einziges String Argument benötigt, zB' Player: ',' ​​Player: '. Mein vorstehender Code gibt den Fehler "Eingabe erwartet höchstens 1 Argumente, bekam 2" – quantik

Antwort

3

wollen Sie Formatstrings ich denke

input("Player {player_num}: ".format(player_num=i)) 

wenn Sie es wirklich wie Druck verhalten soll ich denke, Sie so etwas wie

def my_input(*args): 
    return input(" ".join(map(str,args))) 

tun konnte, aber das tut wirklich viel Sinn machen

zu tun
+0

Ja etwas wie das ist, was ich wollte. Vielen Dank! – quantik

3

Möchten Sie die Elemente als einzelne Zeichenfolge verketten?

for i in range(len(game)): 
    game[i].set_name(input("Player " + str(i) + ": ")) 
1

Ich glaube, Ihr Problem bereits gelöst ist, aber ich werde eine andere Idee geben:

Warum nicht Sie lassen den Spieler einsetzen, die Namen aller Spieler, und bittet ihn, sie mit einem Leerzeichen zu trennen.

Sie würden einen String haben, mit dem COMAND

var.split() 

Sie sich die Liste der Namen müssen verwendet werden, von der Reihenfolge, wie sie ihnen gab. Sie können auch Params in usa Kommas oder Semikola als Trennzeichen trennen