int объект не является итерируемым?

inp = int(input("Enter a number:")) for i in inp: n = n + i; print (n) 

… выдает ошибку: 'int' object is not iterable

Я хотел узнать общее количество, добавив каждую цифру, например, 110. 1 + 1 + 0 = 2. Как мне это сделать?

благодаря

Во-первых, потеряйте этот абсурдный призыв к int – который отнимает вас дальше от того, чего вы хотите, так что, что когда-либо было у вас в этом! Изменить:

 inp = int(input("Enter a number:")) 

к более простому

 inp = input("Enter a number:") 

так что inp – это строка цифр, и вы можете ее перебирать цифрой по цифре.

Затем назначьте некоторое начальное значение n – поскольку ваш код стоит прямо сейчас, вы получите NameError так как вы его никогда не инициализируете. Предположительно, вы хотите, чтобы n = 0 перед циклом for .

Затем рассмотрим разницу между символом и целым числом. Теперь у вас есть:

 n = n + i; 

который, кроме совершенно абсурдной (но безобидной) точки с запятой, пытается суммировать символ i с целым n – это не сработает! Таким образом, это становится

 n = n + int(i) 

превратить символ '7' в целое число 7 и т. д.

пытаться:

 for i in str(inp): 

Это будет перебирать символы в строчном представлении. Когда у вас есть каждый персонаж, вы можете использовать его как отдельный номер.

Замечание: если вы хотите получить сумму всех цифр, вы можете просто сделать

 print sum(int(digit) for digit in raw_input('Enter a number:')) 

Ну, вы хотите обработать строку, представляющую число, итерацию над цифрами, а не само число (это абстрактный объект, который может быть написан по-разному, например «CX» в римских цифрах или «0x6e» шестнадцатеричный (как для 110) или что-то еще).

Следовательно:

 inp = input('Enter a number:') n = 0 for digit in inp: n = n + int(digit) print(n) 

Обратите внимание, что требуется n = 0 (где-то до входа в цикл). Вы не можете взять значение переменной, которая не существует (а правая часть n = n + int(digit) принимает значение n ). И если n существует в этой точке, это может содержать нечто совершенно не связанное с вашими настоящими потребностями, что приводит к неожиданному поведению; вам нужно защититься от этого.

Это решение не пытается гарантировать, что ввод, предоставленный пользователем, фактически является числом. Я оставлю эту проблему для вас, чтобы подумать (подсказка: все, что вам нужно, есть в учебнике Python ).

for .. in операторах ожидает, что вы будете использовать тип, который имеет итератор. Простой тип int не имеет итератора.

Как уже упоминалось о горах

 inp = int(input("Enter a number:")) n = 0 for i in str(inp): n = n + int(i); print n 

Когда вы перебираете что-то, ключевое слово «IN», просто всегда думайте об этом как о чем-то. Вы не можете пропустить одно целое число. Следовательно, это невозможно.

возможно, вы пытаетесь

 for i in range(inp) 

У меня просто была эта ошибка, потому что я не использовал range ()

Возьмите свой вклад и убедитесь, что это строка, так что она повторяется.

Затем выполните проверку списка и измените каждое значение обратно на число.

Теперь вы можете сделать сумму всех чисел, если хотите:

 inp = [int(i) for i in str(input("Enter a number:"))] print sum(inp) 

Или, если вы действительно хотите видеть вывод во время его выполнения:

 def printadd(x,y): print x+y return x+y inp = [int(i) for i in str(input("Enter a number:"))] reduce(printadd,inp) 

Вы можете попробовать изменить for i in inp: for i in range(1,inp): Итерация не работает с одним int. Вместо этого вам необходимо предоставить диапазон для его запуска.

Не делайте это int() , но сделайте так, чтобы range() решит эту проблему.

 inp = range(input("Enter a number: "))