157 votes

Python: TypeError: impossible de concaténer les objets 'str' et 'int'

J'ai ce programme python qui ajoute des chaînes aux entiers:

 a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b
a = int(a)
b = int(b)
c = a + b
str(c)
print "a + b as integers: " + c
 

Je reçois cette erreur:

 Python: TypeError: cannot concatenate 'str' and 'int' objects
 

Comment puis-je ajouter des chaînes à des entiers?

187voto

Levon Points 34085

Il ya deux façons de résoudre le problème, qui est causé par la dernière print déclaration.

Vous pouvez affecter le résultat de l' str(c) appel à l' c comme correctement indiqué par @jamylak et puis concaténer toutes les chaînes, ou vous pouvez remplacer le dernier print simplement avec ceci:

print "a + b as integers: ", c  # note the comma here

auquel cas

str(c)

n'est pas nécessaire et peut être supprimé.

Sortie de l'échantillon exécuter:

Enter a: 3
Enter b: 7
a + b as strings:  37
a + b as integers:  10

avec:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b  # + everywhere is ok since all are strings
a = int(a)
b = int(b)
c = a + b
print "a + b as integers: ", c

86voto

jamylak Points 38094

str(c) renvoie une nouvelle représentation de chaîne de c et ne mute pas c elle-même.

 c = str(c) 
 

est probablement ce que vous cherchez

23voto

Thargor Points 860

Si vous voulez concaténer int ou floats en chaîne, vous devez utiliser ceci:

 i = 123
a = "foobar"
s = a + str(i)
 

6voto

user2919374 Points 11
 c = a + b 
str(c)
 

En fait, dans cette dernière ligne, vous ne modifiez pas le type de la variable c. Si tu fais

 c_str=str(c)
print "a + b as integers: " + c_str
 

ça devrait marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X