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;
, который, помимо ненужной точки с запятой (Python - это синтаксис, основанный на отступах), пытается суммировать символ i до целого n - это не сработает! Итак, this становится
n = n + int(i)
, чтобы превратить символ '7'
в целое число 7
и так далее.
try:
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 .. in
операторы ожидают, что вы будете использовать тип, для которого определен итератор. Простой тип int не имеет итератора.
Как уже упоминали гхиллы
inp = int(input("Enter a number:"))
n = 0
for i in str(inp):
n = n + int(i);
print n
Когда вы просматриваете что-то в цикле, ключевое слово - «IN», просто всегда думайте об этом как о списке чего-то. Вы не можете перебрать простое целое число. Следовательно, это не повторяется.