Python: TypeError: ne peut pas concaténer les objets 'str' et ' int ' [dupliquer]

cette question a déjà une réponse ici:

j'ai ce programme python qui ajoute des chaînes à des 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

How puis-je ajouter des chaînes d'entiers?

124
demandé sur Eric Leschinski 2012-08-07 14:35:24

9 réponses

il y a deux façons de résoudre le problème causé par la dernière déclaration print .

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

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

dans lequel cas

str(c)

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

Résultat de l'essai:

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
153
répondu Levon 2012-08-07 11:28:36

str(c) retourne une nouvelle string representation of c , et ne mute pas c elle-même.

c = str(c) 

est probablement ce que vous cherchez

65
répondu jamylak 2012-08-07 10:37:09

si vous voulez concaténer int ou flotte sur une chaîne, vous devez utiliser ceci:

i = 123
a = "foobar"
s = a + str(i)
21
répondu Thargor 2012-09-26 12:45:19
c = a + b 
str(c)

en Fait, dans cette dernière ligne vous n'êtes pas changer le type de la variable c. Si vous n'

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

ça devrait marcher.

5
répondu user2919374 2013-10-25 09:38:28

la solution la plus facile et la moins confuse:

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é ça sur http://freecodeszone.blogspot.com /

1
répondu Shekhar 2016-06-26 11:31:01

j'ai aussi eu le message d'erreur "TypeError: ne peut pas concaténer 'str' et de 'int' "objets". Il s'avère que j'ai juste oublié d'ajouter str() autour d'une variable lors de l'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, c'était une erreur stupide, mais pour les débutants qui sont très python comme moi, il arrive.

0
répondu djmurps 2016-12-10 23:20:36

vous pouvez convertir int en str en utilisant la fonction de chaîne de caractères:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
0
répondu Cmpmohan Mohan 2017-07-25 07:11:55

C'est ce que j'ai fait pour me débarrasser de cette erreur séparant la variable avec", " m'a aidé.

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

Voici la sortie

valeur est -113

(programme sorti avec code: 0)

0
répondu Mansur Ali 2017-09-07 08:59:47

outre les autres réponses, on pourrait aussi utiliser format()

print("a + b as integers: {}".format(c))

par exemple -

hours = 13
minutes = 32
print("Time elapsed - {} hours and {} minutes".format(hours, minutes))

résultera en sortie - Time elapsed - 13 hours and 32 minutes

0
répondu Ananth Raj Singh 2018-07-21 16:03:47