169 votes

Comment imprimer comme printf en Python3?

En Python 2, j'ai utilisé :

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

J'ai essayé :

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

265voto

Robᵩ Points 50501

En Python2, print était un mot-clé qui introduisait une instruction :

print "Hi"

En Python3, print est une fonction qui peut être invoquée :

print ("Hi")

Dans les deux versions, % est un opérateur qui nécessite une chaîne à gauche et une valeur ou un tuple de valeurs ou un objet de mappage (comme dict) à droite.

Donc, votre ligne devrait ressembler à ceci :

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

De plus, la recommandation pour Python3 et les versions plus récentes est d'utiliser le formatage {} plutôt que le formatage % :

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

Python 3.6 introduit yet un autre paradigme de formatage de chaîne : f-strings.

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

70voto

thefourtheye Points 56958

La manière la plus recommandée de le faire est d'utiliser la méthode format. En savoir plus à ce sujet ici

a, b = 1, 2

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

47voto

Fonction printf() simple provenant du Python Cookbook d'O'Reilly.

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

Exemple de sortie:

i = 7
pi = 3.14159265359
printf("salut tout le monde, i=%d, pi=%.2f\n", i, pi)
# salut tout le monde, i=7, pi=3.14

34voto

kva1966 Points 451

Python 3.6 a introduit les f-strings pour l'interpolation en ligne. Ce qui est encore plus agréable, c'est qu'il a étendu la syntaxe pour également permettre les spécificateurs de format avec l'interpolation. Quelque chose sur lequel j'ai travaillé pendant que je cherchais sur Google (et suis tombé sur cette vieille question!) :

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

PEP 498 a les détails. Et... cela a résolu mon agacement avec les spécificateurs de format dans d'autres langages -- permet des spécificateurs qui peuvent eux-mêmes être des expressions ! Hourra ! Voir : Format Specifiers.

18voto

Donald Derek Points 434

Exemple simple:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X