loop - Python-TypeError: el objeto ''int'' no es iterable
python for loop (1)
Aquí está mi código:
import math
print "Hey, lets solve Task 4 :)"
number1 = input ("How many digits do you want to look at? ")
number2 = input ("What would you like the digits to add up to? ")
if number1 == 1:
cow = range(0,10)
elif number1 == 2:
cow = range(10,100)
elif number1 == 3:
cow = range(100,1000)
elif number1 == 4:
cow = range(1000,10000)
elif number1 == 5:
cow = range(10000,100000)
elif number1 == 6:
cow = range(100000,1000000)
elif number1 == 7:
cow = range(1000000,10000000)
elif number1 == 8:
cow = range(10000000,100000000)
elif number1 == 9:
cow = range(100000000,1000000000)
elif number1 == 10:
cow = range(1000000000,10000000000)
number3 = cow[-1] + 1
n = 0
while n < number3:
number4 = list(cow[n])
n += 1
Estoy buscando hacer un ciclo para que cada elemento de la lista se descomponga en cada uno de sus caracteres. Por ejemplo, supongamos que el número 137
estaba en la lista y luego se convertiría en [1,3,7]
. Luego quiero agregar estos números (aún no comencé ese bit, pero tengo una idea de cómo hacerlo).
Sin embargo, sigo recibiendo el mensaje de error
TypeError: ''int'' object is not iterable
cuando trato de ejecutar esto
¿Qué estoy haciendo mal?
Tu problema es con esta línea:
number4 = list(cow[n])
Intenta tomar cow[n]
, que devuelve un 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 "<stdin>", line 1, in <module>
TypeError: ''int'' object is not iterable
>>>
Quizás quisiste poner cow[n]
dentro de una lista:
number4 = [cow[n]]
Vea una demostración a continuación:
>>> a = 1
>>> [a]
[1]
>>>
Además, quería abordar dos cosas:
- Su declaración while falta un
:
al final. - Se considera muy peligroso utilizar una
input
como esa, ya que evalúa su entrada como código real de Python. Sería mejor usarraw_input
y luego convertir la entrada a un entero conint
.
Para dividir los dígitos y luego agregarlos como desee, primero haría que el número fuera una cadena. Entonces, como las cadenas son iterables, puedes 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
>>>