web-dev-qa-db-fra.com

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?

130
user1581649

Il existe deux façons de résoudre le problème provoqué par la dernière instruction print

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

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

dans quel cas 

str(c)

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

Sortie de l'échantillon:

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
160
Levon

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

c = str(c) 

est probablement ce que vous cherchez

71
jamylak

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

i = 123
a = "foobar"
s = a + str(i)
21
Thargor
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.

5
user2919374

La solution la plus facile et la moins déroutante:

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

J'ai trouvé ceci sur http://freecodeszone.blogspot.com/

1
Shekhar

J'ai également eu le message d'erreur "TypeError: impossible de concaténer les objets 'str' et 'int'". Il se trouve que j'ai juste oublié d'ajouter str () autour d'une variable lors de son impression. Voici mon code:

def main():
	rolling = True; import random
	while rolling:
		roll = input("ENTER = roll; Q = quit ")
		if roll.lower() != 'q':
			num = (random.randint(1,6))
			print("----------------------"); print("you rolled " + str(num))
		else:
			rolling = False
main()

Je sais que c'était une erreur stupide, mais pour les débutants très novices dans le python comme moi, cela se produit.

0
djmurps

Vous pouvez convertir int en str en utilisant la fonction string:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
0
Cmpmohan Mohan

C’est ce que j’ai fait pour supprimer cette erreur de séparation des variables avec "," m’a aidé.

# Applying BODMAS 
arg3 = int((2 + 3) * 45 / - 2)
arg4 = "Value "
print arg4, "is", arg3

Voici la sortie

La valeur est -113

(programme terminé avec code: 0)

0
Mansur Ali