web-dev-qa-db-fra.com

Imprimer des variables en Python 3.4

Donc, la syntaxe semble avoir changé de ce que j'ai appris dans Python 2 ... voici ce que j'ai jusqu'à présent

for key in Word:
    i = 1
    if i < 6:
        print ( "%s. %s appears %s times.") % (str(i), key, str(wordBank[key]))

La première valeur étant un int, la seconde une chaîne et la dernière un int.

Comment puis-je modifier mon instruction print afin qu'elle imprime correctement les variables?

21
algorhythm

La syntaxe a changé en ce que print est maintenant une fonction . Cela signifie que le formatage % doit être fait entre parenthèses:1

print("%d. %s appears %d times." % (i, key, wordBank[key]))

Cependant, étant donné que vous utilisez Python 3.x, vous devriez utiliser la méthode plus récente str.format :

print("{}. {} appears {} times.".format(i, key, wordBank[key]))

Bien que le formatage % ne soit pas (encore) obsolète officiellement, il est déconseillé en faveur de str.format et sera probablement supprimé de la langue dans une version à venir (peut-être Python 4?).


1Juste une note mineure: %d est le spécificateur de format pour les entiers, pas %s.

70
iCodez

Version 3.6+: Utilisez un littéral de chaîne formaté , f-string pour faire court

print(f"{i}. {key} appears {wordBank[key]} times.")
11
wwii

Essayez la syntaxe de format:

print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))

Les sorties:

1. b appears 3.1415 times.

La fonction print est appelée comme n'importe quelle autre fonction, avec des parenthèses autour de tous ses arguments.

4
horns

Vous pouvez également formater la chaîne de la manière suivante:

>>> print ("{index}. {Word} appears {count} times".format(index=1, Word='Hello', count=42))

Quelles sorties

1. Hello appears 42 times.

Parce que les valeurs sont nommées, leur ordre n'a pas d'importance. Faire en sorte que l'exemple ci-dessous soit identique à l'exemple ci-dessus.

>>> print ("{index}. {Word} appears {count} times".format(count=42, index=1, Word='Hello'))

Le formatage de chaîne de cette façon vous permet de le faire.

>>> data = {'count':42, 'index':1, 'Word':'Hello'}
>>> print ("{index}. {Word} appears {count} times.".format(**data))
1. Hello appears 42 times.
1
Erion V

Le problème semble être un ) mal placé. Dans votre exemple, vous avez le % en dehors de la print(), vous devez le déplacer à l'intérieur:

Utilisez ceci:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))
0
adarsh