Saltar al contenido

Python – TypeError: el objeto ‘int’ no es iterable

Este tutorial fue evaluado por especialistas así se asegura la veracidad de esta noticia.

Solución:

Tu problema es con esta línea:

number4 = list(cow[n])

trata de tomar cow[n], que devuelve un número entero, y lo convierte en una lista. Esto no funciona, como se demuestra a continuación:

>>> a = 1
>>> list(a)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not iterable
>>>

Tal vez quisiste poner cow[n]en el interior una lista:

number4 = [cow[n]]

Vea una demostración a continuación:

>>> a = 1
>>> [a]
[1]
>>>

Además, quería abordar dos cosas:

  1. A su instrucción while le falta un : al final.
  2. Se considera muy peligroso utilizar input así, ya que evalúa su entrada como código Python real. Sería mejor aquí para usar raw_input y luego convertir la entrada a un número entero con int.

Para dividir los dígitos y luego agregarlos como quieras, primero convertiría el número en string. Entonces, dado que las cadenas son iterables, puede usar sum:

>>> a = 137
>>> a = str(a)
>>> # This way is more common and preferred
>>> sum(int(x) for x in a)
11
>>> # But this also works
>>> sum(map(int, a))
11
>>>

¡Esto es muy simple, está tratando de convertir un número entero en un objeto de lista! por supuesto que fallará y debería…

Para demostrar/probarle esto usando el ejemplo que proporcionó… simplemente use la función de tipo para cada caso como se muestra a continuación y los resultados hablarán por sí mismos.

>>> type(cow)

>>> 
>>> type(cow[0])

>>> 
>>> type(0)

>>> 
>>> >>> list(0)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not iterable
>>> 

Si para ti ha sido útil este post, sería de mucha ayuda si lo compartes con el resto desarrolladores de este modo contrubuyes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *