wake-up-neo.com

Wie druckt man wie printf in Python3?

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))
98
Mike L

In Python2 war print ein Schlüsselwort, das eine Anweisung einführte:

print "Hi"

In Python3 ist print eine Funktion, die aufgerufen werden kann:

print ("Hi")

In beiden Versionen ist % ein Operator, der auf der linken Seite eine Zeichenfolge und auf der rechten Seite einen Wert oder einen Tupel mit Werten oder ein Mapping-Objekt (wie dict) benötigt.

Ihre Linie sollte also so aussehen:

print("a=%d,b=%d" % (f(x,n),g(x,n)))

Die Empfehlung für Python3 und höher ist die Verwendung der {}-Formatierung anstelle der %- Formatierung:

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

Python 3.6 führt ein weiteres Paradigma für die String-Formatierung ein: f-strings .

print(f'a={f(x,n):d}, b={g(x,n):d}')
172
Robᵩ

Die empfohlene Methode ist die Verwendung der format-Methode. Lesen Sie mehr darüber hier

a, b = 1, 2

print("a={0},b={1}".format(a, b))
45
thefourtheye

Einfache printf () - Funktion aus O'Reilly's Python Cookbook .

import sys
def printf(format, *args):
    sys.stdout.write(format % args)

Beispielausgabe:

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
20

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 Formatbezeichner mit Interpolation zuzulassen. Etwas, an dem ich gearbeitet habe, während ich das gegoogelt habe (und auf diese alte Frage gestoßen ist!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')

PEP 498 hat die Details. Und ... mein Pet-Peeve wurde mit Formatbezeichnern in anderen langsamen Sortierern sortiert - ermöglicht Spezifizierern, die selbst Ausdrücke sein können! Yay! Siehe: Formatangaben .

16
kva1966

Einfaches Beispiel:

print("foo %d, bar %d" % (1,2))

13
Donald Derek

Eine einfachere.

def printf(format, *values):
    print(format % values )

Dann:

printf("Hello, this is my name %s and my age %d", "Martin", 20)
8
Famory Toure

Da sich Ihr % außerhalb der print(...)-Klammern befindet, versuchen Sie, Ihre Variablen in das result Ihres print-Aufrufs einzufügen. print(...) gibt None zurück, so dass dies nicht funktioniert, und es gibt auch die kleine Sache, dass Sie Ihre Vorlage zu diesem Zeitpunkt bereits gedruckt haben und die Zeitreise durch die Gesetze des Universums, in dem wir leben, verboten ist.

Das Ganze, das Sie drucken möchten, einschließlich % und seines Operanden, muss inside Ihr print(...)-Aufruf sein, damit die Zeichenfolge erstellt werden kann, bevor sie gedruckt wird.

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

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 betrachtet werden).

3
kindall

Andere Wörter, die printf in Python nicht vorhanden ist ... Ich bin überrascht! Bester Code ist

def printf(format, *args):
    sys.stdout.write(format % args)

Aufgrund dieses Formulars kann\n nicht gedruckt werden. Alle anderen nicht. Deshalb ist Print ein schlechter Operator. Und Sie benötigen auch Schreibartikel in spezieller Form. Es gibt keine funktionellen Nachteile. Dies ist eine übliche Form der printf-Funktion.

1
Anatoliy
print("Name={}, balance={}".format(var-name, var-balance))
0
User707