es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problemas en el uso de sum. TypeError: el objeto ‘int’ no es iterable.

Recibo un error al sumar dos valores 5 y 5. Me gustaría recibir el resultado 10. Escribí el código basado en tuplas, esto me trajo algunos errores previos porque no se pueden agregar, por ejemplo,

sum_A = sum (count_A)

porque recibí un error

TypeError: operandos no soportados para +: ‘int’ y ‘tupla’

Así que lo resolví con sum(int(row[0])) para la fila en count_gol_fact_home_sqA. No me gustó mucho de esta manera. No quiero usar sumA = sum (int (row [0]) para la fila en countA)

Sin embargo, continué, pero me encontré con un error que no me permite sumar sum_A y sum_B.

¿Cómo puedo agregar sum_A y sum_B? ¿Hay otra manera de escribir mi código más fácilmente agregando previamente sum_A = sum (count_A) sin recibir errores?

Código:

#ELEMENTO 1
cursor.execute('SELECT Ciudad FROM Nación WHERE X = ?', [X])
count_A = cursor.fetchall() #Imprime [(2,), (1,), (2,)]

sum_A = sum(int(fila[0]) for fila in count_A) #imprime 5
print(sum_A)
###########################################

#ELEMENTO 2
cursor.execute('SELECT Ciudad FROM Nación WHERE Y = ?', [Y])
count_B = cursor.fetchall() #Imprime [(3,), (2,)]

sum_B = sum(int(fila[0]) for fila in count_B) #imprime 5
print(sum_B)
###########################################

SumA_B = sum([sum_A, sum_B])
print(SumA_B) #ERROR: Me gustaría obtener el resultado 10

Error:

Traceback (most recent call last):
File "main.py", line 17, in
SumA_B = sum([sum_A, sum_B])
TypeError: el objeto 'int' no es iterable

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque estás pasando dos enteros a la función sum() en lugar de un objeto iterable, lo que está causando el error “no iterable”. Para sumar sum_A y sum_B juntos, simplemente puedes utilizar el operador +, de esta manera:

    SumA_B = sum_A + sum_B
    print(SumA_B)
    

    Esto debería darte el resultado deseado de 10.

    En cuanto al error anterior con sum(count_A), la razón por la que recibiste el error “operando no soportado” es porque count_A es una lista de tuplas, no una lista de enteros. La función sum() solo puede ser utilizada en una lista de enteros, por lo que necesitas extraer el valor entero de cada tupla en count_A utilizando int(row[0]). Desafortunadamente, no hay otra forma de hacer esto si quieres usar sum() para encontrar la suma de los valores en count_A.

    Si no quieres utilizar una comprensión de lista para extraer los valores, podrías usar un bucle en su lugar:

    sum_A = 0
    for row in count_A:
        sum_A += int(row[0])
    

    Este enfoque te dará el mismo resultado que utilizar una comprensión de lista.

Comments are closed.