over loop index for array python list loops iterable

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:

  1. Su declaración while falta un : al final.
  2. Se considera muy peligroso utilizar una input como esa, ya que evalúa su entrada como código real de Python. Sería mejor usar raw_input y luego convertir la entrada a un entero con int .

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 >>>