Dans 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))
python
string
python-3.x
Mike L
la source
la source
%
a toujours été un opérateur de chaîne, non lié à l'print
instruction. Vous pouvez, par exemple, créer une chaîne avecs="a=%d,b=%d"%(f(x,n),g(x,n))
, puis imprimer cette chaîne avecprint s
.Réponses:
En Python2,
print
était un mot-clé qui introduisait une instruction:En Python3,
print
est une fonction qui peut être appelée:Dans les deux versions,
%
est un opérateur qui nécessite une chaîne sur le côté gauche et une valeur ou un tuple de valeurs ou un objet de mappage (commedict
) sur le côté droit.Donc, votre ligne devrait ressembler à ceci:
De plus, la recommandation pour Python3 et plus récent est d'utiliser le
{}
formatage -style au lieu du%
formatage -style:Python 3.6 introduit encore un autre paradigme de formatage de chaîne: les f-strings .
la source
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
où cet exemple montre comment vous pouvez utiliser les modificateurs de style printf et utilisent encore des mots - clés.La méthode la plus recommandée consiste à utiliser la
format
méthode. En savoir plus icila source
Fonction printf () simple du livre de recettes Python d' O'Reilly .
Exemple de sortie:
la source
PRINT
etFORMAT
...? Retour dans le temps 60+ ans à l'époque de FORTRAN :)Python 3.6 a introduit des chaînes f pour l'interpolation en ligne. Ce qui est encore plus agréable, c'est qu'il a étendu la syntaxe pour autoriser également les spécificateurs de format avec interpolation. Quelque chose sur lequel j'ai travaillé pendant que je cherchais ceci (et suis tombé sur cette vieille question!):
PEP 498 a les détails. Et ... il a trié ma bête noire avec des spécificateurs de format dans d'autres langages - permet des spécificateurs qui eux-mêmes peuvent être des expressions! Yay! Voir: Spécificateurs de format .
la source
Exemple simple:
print("foo %d, bar %d" % (1,2))
la source
Un plus simple.
Ensuite:
la source
Parce que vous êtes en
%
dehors desprint(...)
parenthèses, vous essayez d'insérer vos variables dans le résultat de votreprint
appel.print(...)
revientNone
, donc cela ne fonctionnera pas, et il y a aussi le petit problème que vous ayez déjà imprimé votre modèle à ce moment-là et que le voyage dans le temps soit interdit par les lois de l'univers dans lequel nous vivons.Tout ce que vous voulez imprimer, y compris le
%
et son opérande, doit être dans votreprint(...)
appel, afin que la chaîne puisse être construite avant d'être imprimée.J'ai ajouté quelques espaces supplémentaires pour le rendre plus clair (bien qu'ils ne soient pas nécessaires et généralement pas considérés comme un bon style).
la source
Autres mots printf absent en python ... Je suis surpris! Le meilleur code est
En raison de cette forme permet de ne pas imprimer \ n. Tous les autres non. C'est pourquoi l'impression est un mauvais opérateur. Et vous devez également écrire des arguments sous une forme spéciale. Il n'y a pas d'inconvénients dans la fonction ci-dessus. C'est une forme habituelle standard de la fonction printf.
la source
la source