In Python 2 habe ich verwendet:
print "a=%d,b=%d" % (f(x,n),g(x,n))
Ich habe es versucht:
print("a=%d,b=%d") % (f(x,n),g(x,n))
python
string
python-3.x
Mike L.
quelle
quelle
%
war schon immer ein String-Operator, der nicht mit derprint
Anweisung zusammenhängt. Sie können beispielsweise eine Zeichenfolge mit erstellen und diese Zeichenfolges="a=%d,b=%d"%(f(x,n),g(x,n))
dann mit druckenprint s
.Antworten:
In Python2
print
war ein Schlüsselwort, das eine Anweisung einführte:In Python3
print
ist eine Funktion, die aufgerufen werden kann:In beiden Versionen
%
ist dies ein Operator, der eine Zeichenfolge auf der linken Seite und einen Wert oder ein Tupel von Werten oder ein Zuordnungsobjekt (wiedict
) auf der rechten Seite benötigt.Ihre Linie sollte also so aussehen:
Die Empfehlung für Python3 und höher lautet außerdem, die
{}
Formatierung im Stil anstelle der%
Formatierung im Stil zu verwenden:Python 3.6 führt ein weiteres Paradigma für die Formatierung von Zeichenfolgen ein: f-Zeichenfolgen .
quelle
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
diesem Beispiel wird gezeigt, wie Sie die Modifikatoren im printf-Stil verwenden und dennoch Schlüsselwörter verwenden können.Die am meisten empfohlene Methode ist die Verwendung der
format
Methode. Lesen Sie hier mehr darüberquelle
Einfache printf () -Funktion aus O'Reillys Python-Kochbuch .
Beispielausgabe:
quelle
PRINT
undFORMAT
...? Zurück in der Zeit 60+ Jahre bis zu den Tagen von FORTRAN :)In Python 3.6 wurden F-Strings für die Inline-Interpolation eingeführt. Noch schöner ist, dass die Syntax erweitert wurde, um auch Formatspezifizierer mit Interpolation zuzulassen. Etwas, an dem ich gearbeitet habe, während ich das gegoogelt habe (und auf diese alte Frage gestoßen bin!):
PEP 498 enthält die Details. Und ... es hat meinen Ärger mit Formatspezifizierern in anderen langs sortiert - ermöglicht Spezifizierer, die selbst Ausdrücke sein können! Yay! Siehe: Formatbezeichner .
quelle
Einfaches Beispiel:
print("foo %d, bar %d" % (1,2))
quelle
Eine einfachere.
Dann:
quelle
Da Sie
%
sich außerhalb derprint(...)
Klammern befinden, versuchen Sie, Ihre Variablen in das Ergebnis Ihresprint
Aufrufs einzufügen .print(...)
kehrt zurückNone
, so dass dies nicht funktioniert, und es gibt auch die kleine Sache, dass Sie Ihre Vorlage bereits gedruckt haben, und Zeitreisen sind nach den Gesetzen des Universums, in dem wir leben, verboten.Das Ganze, das Sie drucken möchten, einschließlich des
%
Operanden und seines Operanden, muss sich in Ihremprint(...)
Aufruf befinden, damit die Zeichenfolge vor dem Drucken erstellt werden kann.Ich habe ein paar zusätzliche Leerzeichen hinzugefügt, um es klarer zu machen (obwohl sie nicht notwendig sind und im Allgemeinen nicht als guter Stil angesehen werden).
quelle
Mit anderen Worten: printf fehlt in Python ... Ich bin überrascht! Bester Code ist
Aufgrund dieses Formulars darf \ n nicht gedruckt werden. Alle anderen nein. Deshalb ist der Druck ein schlechter Operator. Außerdem müssen Sie Argumente in spezieller Form schreiben. Es gibt keine Nachteile in der obigen Funktion. Es ist eine übliche Standardform der printf-Funktion.
quelle
quelle