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. Как мне это сделать?
Спасибо
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;
который, помимо совершенно абсурдной (но безобидной) точки с запятой, пытается суммировать символ я с целым числом n - это не сработает! Итак, этот становится
n = n + int(i)
чтобы превратить символ '7'
в целое число 7
и т.д.
попробовать:
for i in str(inp):
Это будет перебирать символы в строчном представлении. Как только у вас есть каждый символ, вы можете использовать его как отдельный номер.
Ну, вы хотите обработать строку, представляющую число, итерацию по цифрам, а не само число (это абстрактный объект, который может быть написан по-разному, например "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).
Боковое примечание: если вы хотите получить сумму всех цифр, вы можете просто сделать
print sum(int(digit) for digit in raw_input('Enter a number:'))
Возможно, вы пытаетесь
for i in range(inp)
У меня просто была эта ошибка, потому что я не использовал range()
for .. in
ожидают, что вы будете использовать тип, определяющий итератор. Простой тип int не имеет итератора.
Как уже упоминалось ghills
inp = int(input("Enter a number:"))
n = 0
for i in str(inp):
n = n + int(i);
print n
Когда вы перебираете что-то, ключевое слово "IN", просто всегда думайте об этом как о чем-то. Вы не можете пропустить одно целое число. Следовательно, это невозможно.
Возьмите свой ввод и убедитесь, что он содержит строку, чтобы она была итерабельной.
Затем выполните проверку списка и измените каждое значение обратно на число.
Теперь вы можете сделать сумму всех чисел, если хотите:
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: "))