Concaténer des string et int en python 3.4
Je suis nouveau sur Python, j'ai donc été en cours d'exécution à travers ma propre série d'exercices pour simplement commencer à mémoriser les fonctions de base et de la syntaxe. Je suis l'aide de Pycharm IDE et Python 3.4. J'ai rencontrer un problème lors de l'exécution par le biais de certains de base str/int concaténation des exercices. Chaque exemple ci-dessous est en train de jeter un non pris en charge type d'opérande. Il y a plusieurs fils sur Stackoverflow qui indique clairement la bonne syntaxe de concaténation, mais au-dessus de message d'erreur continue à me hanter.
print ("Type string: ") + str(123)
print ("Concatenate strings and ints "), 10
Vous devez vous connecter pour publier un commentaire.
Rappelez-vous (ou si vous ne le connaissez pas encore, lisez sur le sujet) que
print
est une fonction en Python 3. En Python 2, votre première ligne de concaténer "de Type string:" et "123" et de les imprimer ensuite. En Python 3, vous appelez leprint
fonction avec un argument, qui renvoieNone
, puis ajouter "123" pour. Qui n'a pas de sens.La deuxième ligne ne génère pas une erreur en Python 2 ou 3 (je l'ai testé avec 2.7.7 et 3.2.3). En Python 2, vous obtenez
tout en Python 3, votre script ne doit imprimer
C'est parce qu'encore une fois, l'impression est une fonction, donc vous l'appelez avec l'argument "Concaténer des chaînes et services de renseignements". Le
, 10
rend votre ligne d'un n-uplet de la valeur de retour deprint
, qui estNone
, et10
. Puisque vous ne faites pas usage de ce tuple pour rien, il n'y a pas d'effet visible.En Python 3+,
print
est une fonction, donc il doit être appelé avec ses arguments entre parenthèses. Ainsi, par exemple, ce que vous voulez dire avec votre exemple:serait effectivement la même chose que:
Depuis
print
ne retourne rien (en Python, cela signifieNone
), c'est l'équivalent de:qui, évidemment, va donner une erreur.
Qui se dit au sujet de ce que vous avez essayé de faire, ce que vous voulez faire est très simple: passer le
print
fonction ce que tu veux dire pour l'impression, ce qui peut être fait de différentes manières:Essayer
format()
:print("Hello %s" % "world")
print
arguments, en partie parce qu'il évite la possibilité de la personne du problème à venir... mais sans une explication quant à la pourquoi c'est mieux, il n'est pas beaucoup de réponse ici.Ce qui est mal à cela?
print
est juste une fonction comme n'importe quoi d'autre. Et vous êtes en appelant cette fonction avec un argument,"Type string: "
, puis d'essayer d'ajouter le résultat (qui seraNone
) à la chaîne'123'
. Ce n'est pas d'aller travailler. Si vous voulez ajouter les deux chaînes ensemble, vous devez les mettre dans la même expression, à l'intérieur des parenthèses:De la même façon:
Ce appels
print
avec un argument, et puis il fait un tuple de laNone
retourné parprint
et le nombre 10. Si vous souhaitez passer10
à laprint
appel, il doit aller à l'intérieur des parenthèses:Comme rednaw la réponse de points, en utilisant
str.format
est plus souple, et évite le risque de problèmes de ce genre. Il vous donne également un code qui fonctionne exactement de la même manière dans les deux Python 2.6-2.7 et Python 3.x, ce qui est assez agréable, même si vous n'êtes pas en train d'écrire à double plate-forme/base de code unique code, parce que ce sera compréhensible, même pour des gens qui ne connaissent l'un ou l'autre.Vous pouvez le faire comme ceci:
Résultat:
je pense que c'est assez cool de façon à Concaténer des string et int en python