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?
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
.
Version 3.6+: Utilisez un littéral de chaîne formaté , f-string pour faire court
print(f"{i}. {key} appears {wordBank[key]} times.")
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.
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.
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])))