2017-01-20 3 views
3

Ich habe gesagt, dass in Python 3.x ist es möglich, ein Trennzeichen zwischen Strings hinzufügen, die Sie Multiplikation wiederholen, beispielsweise ..September Verwendung als Strings in Python Multiplikation

c = "rabble" 

print(c * 5, sep = ' | ') 

Ich mag es würde 5 Mal mit der Zeichenkette | zwischen jeder Wiederholung auszudrucken.

Es druckt die wiederholte Zeichenfolge, aber ohne das Trennzeichen. Ich habe Probleme, Informationen über die Verwendung von sep in dieser speziellen Situation zu finden. Was mache ich falsch?

Antwort

4

Sie können den gewünschten Effekt erzielen, aber es hat nicht viel mit Multiplikation zu tun per se.

Das sep Argument print() ein Trennzeichen zwischen den Nicht-Schlüsselwort-Argumente liefert - zum Beispiel:

>>> print("spam", "eggs", "ham", sep=" | ") 
spam | eggs | ham 

Sie haben soeben c-print() 5 mal passieren könnte die Ausgabe Sie suchen zu bekommen:

>>> c = "rabble" 
>>> print(c, c, c, c, c, sep=" | ") 
rabble | rabble | rabble | rabble | rabble 

... aber das ist klobig, und keine Verwendung, wenn Sie nicht im Voraus wissen, wie oft Sie wollen c erscheinen.

, um dieses Problem zu erhalten, können Sie argument unpacking verwenden - eine spezielle Syntax, um eine Liste oder eine andere Sequenz an eine Funktion zu übergeben, als ob die Gegenstände darin wurden als einzelne Argumente übergeben werden: get

>>> s = ["spam", "eggs", "ham"] 
>>> print(*s) # notice the * 
spam eggs ham 

Um

das Ergebnis Sie suchen, können Sie eine Liste on the fly von 5 Kopien von c, konstruieren und diese Liste mit dem Argument Auspacken Notation übergeben:

>>> print(*([c] * 5), sep = ' | ') 
rabble | rabble | rabble | rabble | rabble 

Beachten Sie, dass Sie eine Liste sind Multiplikation enthält c von fünf, anstatt c selbst. Sie könnten es hilfreich finden, herauszufinden, was tatsächlich tut, und zu versuchen, herauszufinden, warum (Hinweis: Zeichenfolgen sind auch Sequenzen).

+2

Danke Zero, ich habe den Code am Ende versucht (mit Argument Entpacken ohne c in eine Liste setzen) und es druckt jeden Buchstaben der Zeichenfolge "Pöbel" mit dem '|' Zeichenfolge, die jeden trennt. Ich denke, ich habe ein besseres Verständnis für das ursprüngliche Problem, das ist, dass Print (c * 5) einfach 5 Strings verkettet und keine Bruchstelle bietet, in die das '|' Zeichenfolge kann eingefügt werden. Beim Entpacken von Argumenten ist jeder Buchstabe ein eigenes Element, und in Listen ist jeder String ein eigenes Element, zwischen dem ein Trennzeichen eingefügt werden kann. Danke noch einmal. –

Verwandte Themen