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
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 sumarsum_A
ysum_B
juntos, simplemente puedes utilizar el operador+
, de esta manera: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 porquecount_A
es una lista de tuplas, no una lista de enteros. La funciónsum()
solo puede ser utilizada en una lista de enteros, por lo que necesitas extraer el valor entero de cada tupla encount_A
utilizandoint(row[0])
. Desafortunadamente, no hay otra forma de hacer esto si quieres usarsum()
para encontrar la suma de los valores encount_A
.Si no quieres utilizar una comprensión de lista para extraer los valores, podrías usar un bucle en su lugar:
Este enfoque te dará el mismo resultado que utilizar una comprensión de lista.