Python-TypeError: объект 'int' не является итерационным
вот мой код:
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
Я ищу, чтобы сделать цикл, так что для каждого элемента в списке он будет разбит на каждый из его символов. Например, скажите число 137
был в списке, то он будет превращен в [1,3,7]
. Затем я хочу добавить эти числа вместе (я еще не начал этот бит, но у меня есть некоторое представление о том, как это сделать).
однако я продолжаю получать сообщение об ошибке
TypeError: 'int' object is not iterable
когда я пытаюсь запустить этот.
что я делаю не так?
1 ответов
ваша проблема в этой строке:
number4 = list(cow[n])
он пытается забрать cow[n]
, который возвращает целое число и делает его списком. Это не работает, как показано ниже:
>>> a = 1
>>> list(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
возможно, вы хотели поставить cow[n]
внутри список:
number4 = [cow[n]]
посмотреть демонстрацию ниже:
>>> a = 1
>>> [a]
[1]
>>>
кроме того, я хотел обратиться к двум вещам:
- ваш while-statement отсутствует
:
в конец. - считается очень опасным использовать
input
как это, так как он оценивает его ввод как реальный код Python. Было бы лучше здесь использоватьraw_input
а затем преобразовать входные данные в целое число сint
.
чтобы разделить цифры, а затем добавить их, как вы хотите, я бы сначала сделал число строкой. Затем, поскольку строки являются итерационными, вы можете использовать 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
>>>