web-dev-qa-db-fra.com

Imprimer plusieurs arguments dans Python

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)"

name est une variable dans une liste et score est un entier. Ceci est Python 3.3 si cela peut aider.

273
user1985351

Il y a plusieurs façons de le faire. Pour corriger votre code actuel en utilisant le formatage %-, vous devez passer un tuple:

  1. 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:

  1. 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:

  1. Utilisez le formatage de chaîne de nouveau style:

    print("Total score for {} is {}".format(name, score))
    
  2. 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))
    
  3. 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))
    
  4. Concaténer des chaînes:

    print("Total score for " + str(name) + " is " + str(score))
    

Les deux plus clairs, à mon avis:

  1. 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
    
  2. Utilisez la nouvelle mise en forme de chaîne f- dans Python 3.6:

    print(f'Total score for {name} is {score}')
    
495
Blender

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}')
50
Vikas Gupta

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))`
26
Gavriel Cohen

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.

19
Abhishek

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))
14
Paolo Rovelli

Essayez juste:

print("Total score for", name, "is", score)
12
sarora

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.

9
TheExorcist
print("Total score for %s is %s  " % (name, score))

%s peut être remplacé par %d ou %f

6
user6014455

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

5
Supercolbat

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.

3
user5700251

Utilisez f-string:

print(f'Total score for {name} is {score}')

Ou

Utilisez .format:

print("Total score for {} is {}".format(name, score))
3
iNet