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:
- A su instrucción while le falta un
:
al final. - Se considera muy peligroso utilizar
input
así, ya que evalúa su entrada como código Python real. Sería mejor aquí para usarraw_input
y luego convertir la entrada a un número entero conint
.
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.