it-swarm.com.de

Variablen in Python drucken 3.4

Die Syntax scheint sich von dem, was ich in Python 2 gelernt habe, geändert zu haben. Hier ist, was ich bis jetzt habe

for key in Word:
    i = 1
    if i < 6:
        print ( "%s. %s appears %s times.") % (str(i), key, str(wordBank[key]))

Der erste Wert ist ein int, der zweite eine Zeichenfolge und der letzte ein Int.

Wie kann ich meine print-Anweisung so ändern, dass die Variablen korrekt ausgegeben werden?

21
algorhythm

Die Syntax hat sich dahingehend geändert, dass print jetzt eine Funktion ist. Dies bedeutet, dass die %-Formatierung in der Klammer erfolgen muss:1

print("%d. %s appears %d times." % (i, key, wordBank[key]))

Da Sie jedoch Python 3.x verwenden, sollten Sie eigentlich die neuere Methode str.format verwenden:

print("{}. {} appears {} times.".format(i, key, wordBank[key]))

Obwohl die %-Formatierung nicht offiziell veraltet ist (noch), wird sie zugunsten von str.format abgelehnt und wird höchstwahrscheinlich in einer kommenden Version aus der Sprache entfernt (Python 4 möglicherweise?).


1Nur eine kleine Anmerkung: %d ist der Formatbezeichner für ganze Zahlen, nicht %s.

70
iCodez

Version 3.6+: Verwenden Sie ein formatiertes String-Literal , f-string

print(f"{i}. {key} appears {wordBank[key]} times.")
11
wwii

Versuchen Sie die Formatsyntax:

print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))

Ausgänge:

1. b appears 3.1415 times.

Die Druckfunktion wird wie jede andere Funktion aufgerufen, wobei alle Argumente in Klammern stehen.

4
horns

Sie können den String auch so formatieren:

>>> print ("{index}. {Word} appears {count} times".format(index=1, Word='Hello', count=42))

Welche Ausgänge

1. Hello appears 42 times.

Da die Werte benannt werden, spielt ihre Reihenfolge keine Rolle. Wenn Sie für das folgende Beispiel die gleiche Ausgabe wie für das obige Beispiel verwenden.

>>> print ("{index}. {Word} appears {count} times".format(count=42, index=1, Word='Hello'))

Durch diese Formatierung der Zeichenfolge können Sie dies tun.

>>> data = {'count':42, 'index':1, 'Word':'Hello'}
>>> print ("{index}. {Word} appears {count} times.".format(**data))
1. Hello appears 42 times.
1
Erion V

Das Problem scheint ein falsch platzierter ) zu sein. In Ihrem Beispiel haben Sie den % außerhalb der print(). Sie sollten ihn innerhalb verschieben:

Benutze das:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))
0
adarsh