международный объект не повторяем?

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. Как я делаю это?

Спасибо

16
задан 3zzy 21 December 2009 в 05:14
поделиться

6 ответов

Во-первых, потеряйте вызов 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 и так далее.

20
ответ дан 30 November 2019 в 16:14
поделиться

try:

for i in str(inp):

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

8
ответ дан 30 November 2019 в 16:14
поделиться

Ну, вы хотите обрабатывать строку, представляющую число, повторяя цифры, а не само число (это абстрактная сущность, которую можно записать по-другому, например, "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 ).

3
ответ дан 30 November 2019 в 16:14
поделиться

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

print sum(int(digit) for digit in raw_input('Enter a number:'))
3
ответ дан 30 November 2019 в 16:14
поделиться

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

1
ответ дан 30 November 2019 в 16:14
поделиться

Как уже упоминали гхиллы

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

n = 0
for i in str(inp):
    n = n + int(i);
    print n

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

1
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: