Python - TypeError: 'int' object is not iterable
Your problem is with this line:
number4 = list(cow[n])
It tries to take cow[n]
, which returns an integer, and make it a list. This doesn't work, as demonstrated below:
>>> a = 1>>> list(a)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable>>>
Perhaps you meant to put cow[n]
inside a list:
number4 = [cow[n]]
See a demonstration below:
>>> a = 1>>> [a][1]>>>
Also, I wanted to address two things:
- Your while-statement is missing a
:
at the end. - It is considered very dangerous to use
input
like that, since it evaluates its input as real Python code. It would be better here to useraw_input
and then convert the input to an integer withint
.
To split up the digits and then add them like you want, I would first make the number a string. Then, since strings are iterable, you can use 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>>>
This is very simple you are trying to convert an integer to a list object !!! of course it will fail and it should ...
To demonstrate/prove this to you by using the example you provided ...just use type function for each case as below and the results will speak for itself !
>>> type(cow)<class 'range'>>>> >>> type(cow[0])<class 'int'>>>> >>> type(0)<class 'int'>>>> >>> >>> list(0)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable>>>
If the case is:
n=int(input())
Instead of -> for i in n:
-> gives error- int
object is not iterable
Use -> for i in range(0,n):
works fine..!