TypeError: no se pueden concatenar objetos ‘str’ e ‘int’ [duplicate]

3 minutos de lectura

avatar de usuario
plástico

Tengo este programa de python que agrega cadenas a números enteros:

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

me sale este error:

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

¿Cómo puedo agregar cadenas a enteros?

avatar de usuario
levon

Hay dos formas de solucionar el problema causado por la última print declaración.

Puede asignar el resultado de la str(c) llamar a c como se muestra correctamente por @jamylak y luego concatenar todas las cadenas, o puede reemplazar la última print simplemente con esto:

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

en ese caso

str(c)

no es necesario y se puede eliminar.

Salida de la ejecución de la muestra:

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

con:

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

str(c) devuelve un nuevo representación de cadena de cy no muta c sí mismo.

c = str(c) 

es probablemente lo que estás buscando

  • no creo que el str(c) es necesario en absoluto para el programa (aunque lo que dice sobre tener que asignar el resultado de la función es correcto)

    – Levón

    7 de agosto de 2012 a las 10:44

  • No es necesario, estoy de acuerdo, pero es la razón por la que no funciona como está.

    – Jamylak

    7 de agosto de 2012 a las 10:45

  • Puedes dejarlo, no causa problemas (al igual que en realidad no hace nada 🙂

    – Levón

    7 de agosto de 2012 a las 10:47

  • Si lo elimina, debe cambiar la siguiente línea a print "a + b as integers: ", caunque.

    –Tim Pietzcker

    7 de agosto de 2012 a las 10:49

  • @Levon I +1d para su enfoque “alternativo”

    – Jamylak

    7 de agosto de 2012 a las 12:01

avatar de usuario
thargor

Si desea concatenar int o floats a una cadena, debe usar esto:

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

c = a + b 
str(c)

En realidad, en esta última línea no estás cambiando el tipo de la variable c. Si lo haces

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

deberia de funcionar.

avatar de usuario
Ananth

Además de otras respuestas, también se podría usar format()

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

Por ejemplo –

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

dará como resultado una salida – Time elapsed - 13 hours and 32 minutes

Verificar documentos para más información.

avatar de usuario
Hugo

Puedes convertir int dentro str usando la función de cadena:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")

avatar de usuario
Adrián

La solución más fácil y menos confusa:

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

Encontré esto en http://freecodeszone.blogspot.com/

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad