Ceci est juste un extrait de mon code:
print("Total score for %s is %s ", name, score)
Mais je veux que ce soit imprimé:
"Le score total pour (nom) est (score)"
où name
est une variable dans une liste et score
est un entier. Ceci est Python 3.3 si cela peut aider.
Il y a plusieurs façons de le faire. Pour corriger votre code actuel en utilisant le formatage %
-, vous devez passer un tuple:
Passez le comme un tuple:
print("Total score for %s is %s" % (name, score))
Un tuple avec un seul élément ressemble à ('this',)
.
Voici d'autres façons courantes de le faire:
Passez le comme un dictionnaire:
print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})
Il existe également un formatage de chaîne de style nouveau, qui pourrait être un peu plus facile à lire:
Utilisez le formatage de chaîne de nouveau style:
print("Total score for {} is {}".format(name, score))
Utilisez un formatage de chaîne de style nouveau avec des chiffres (utile pour réorganiser ou imprimer le même fichier plusieurs fois):
print("Total score for {0} is {1}".format(name, score))
Utilisez un formatage de chaîne de style nouveau avec des noms explicites:
print("Total score for {n} is {s}".format(n=name, s=score))
Concaténer des chaînes:
print("Total score for " + str(name) + " is " + str(score))
Les deux plus clairs, à mon avis:
Il suffit de passer les valeurs en tant que paramètres:
print("Total score for", name, "is", score)
Si vous ne souhaitez pas que des espaces soient insérés automatiquement par print
dans l'exemple ci-dessus, modifiez le paramètre sep
:
print("Total score for ", name, " is ", score, sep='')
Si vous utilisez Python 2, vous ne pourrez pas utiliser les deux derniers parce que print
n'est pas une fonction dans Python 2. Vous pouvez toutefois importer ce comportement de __future__
:
from __future__ import print_function
Utilisez la nouvelle mise en forme de chaîne f
- dans Python 3.6:
print(f'Total score for {name} is {score}')
Il y a plusieurs façons d'imprimer cela.
Jetons un coup d'oeil avec un autre exemple.
a = 10
b = 20
c = a + b
#Normal string concatenation
print("sum of", a , "and" , b , "is" , c)
#convert variable into str
print("sum of " + str(a) + " and " + str(b) + " is " + str(c))
# if you want to print in Tuple way
print("Sum of %s and %s is %s: " %(a,b,c))
#New style string formatting
print("sum of {} and {} is {}".format(a,b,c))
#in case you want to use repr()
print("sum of " + repr(a) + " and " + repr(b) + " is " + repr(c))
EDIT :
#New f-string formatting from Python 3.6:
print(f'Sum of {a} and {b} is {c}')
Utilisez: .format()
:
print("Total score for {0} is {1}".format(name, score))
Ou:
// Recommended, more readable code
print("Total score for {n} is {s}".format(n=name, s=score))
Ou:
print("Total score for" + name + " is " + score)
Ou:
`print("Total score for %s is %d" % (name, score))`
Dans Python3.6, f-string
est beaucoup plus propre.
Dans la version précédente:
print("Total score for %s is %s. " % (name, score))
Dans Python 3.6:
print(f'Total score for {name} is {score}.')
ça ira.
C'est plus efficace et élégant.
Pour rester simple, j'aime personnellement la concaténation de chaînes:
print("Total score for " + name + " is " + score)
Cela fonctionne avec Python 2.7 et 3.X.
NOTE: Si le score est un int, vous devez le convertir en str:
print("Total score for " + name + " is " + str(score))
Essayez juste:
print("Total score for", name, "is", score)
Il suffit de suivre ceci
idiot_type = "the biggest idiot"
year = 22
print("I have been {} for {} years ".format(idiot_type, years))
OU
idiot_type = "the biggest idiot"
year = 22
print("I have been %s for %s years."% (idiot_type, year))
Et oubliez tous les autres, sinon le cerveau ne pourra pas cartographier tous les formats.
print("Total score for %s is %s " % (name, score))
%s
peut être remplacé par %d
ou %f
Si score
est un nombre, alors
print("Total score for %s is %d" % (name, score))
Si score est une chaîne, alors
print("Total score for %s is %s" % (name, score))
Si score est un nombre, alors il s'agit de %d
, si c'est une chaîne, alors il s'agit de %s
, si score est un nombre à virgule flottante, il s'agit de %f
C'est ce que je fais:
print("Total score for " + name + " is " + score)
N'oubliez pas de mettre un espace après for
et avant et après is
.
Utilisez f-string
:
print(f'Total score for {name} is {score}')
Ou
Utilisez .format
:
print("Total score for {} is {}".format(name, score))