Je suis donc TRÈS nouveau dans la programmation et j'ai commencé avec Python 3. J'ai commencé à lire "Learn Python the Hard Way". Maintenant, je suis arrivé à un point où j'avais ce code:
x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s" % (binary, do_not)
print(x)
print(y)
print("I said: %r") % x
Je ne connais pas vraiment la différence entre %r
, %s
Et %d
. L'erreur que j'obtiens est TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
Aucune idée de ce qu'il faut faire et comment y remédier. Veuillez expliquer comment je peux réellement le faire fonctionner et pourquoi cela ne fonctionnera pas. De plus, quelle est la différence entre% r, d et s? Des liens utiles? Merci d'avance.
Vous souhaitez appliquer %
À la chaîne à la place:
print("I said: %r" % x)
Votre code l'applique à la valeur de retour de l'appel print()
, qui renvoie None
.
Alternativement, vous pouvez passer à l'aide de str.format()
:
print("I said: {!r}".format(x))
Vous appelez le %
En dehors de la fonction print()
. Cela essaie de voir si la fonction réelle print
peut être imprimée en tant que %r
, Et parce que print
ne renvoie rien, elle essaie d'obtenir %r
Pour la valeur None
(d'où l'erreur NoneType
). Changez-le en:
print("I said: %r" %(x))
Le code suivant:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s") %(x)
Déclenche l'erreur suivante:
Hello World! %s
Traceback (most recent call last):
File "main.py", line 3, in
print ("Hello World! %s") %(x)
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
Changer le code pour les œuvres suivantes:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s" %(x))
Sortie:
Hello World! Hello