Задать вопрос
vvkSeven
@vvkSeven
Junior Python Dev

Нужно вводить число в консоль методом input. Как вывести его разряды и множители?

Доброго времени суток. Недавно начал изучать python и на сайте с задачами нашел одну для себя интересную. Мы должны вводить число в консоль, а выводиться должны его множители и разряды. К примеру : 35= 3*10**1 + 5*10**0 или 321= 3*10**2 + 2*10**1 + 1*10**0.Пытался решить ее через цикл for, но выходит полная каша. Сижу ломаю голову, пока что ничего не выходит. Буду очень благодарен за помощь в решении этой мини задачки.
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
На скорую руку:
>>> a = 234567
>>> b = 0
>>> res = []

>>> while a>10:
...    b = a // 10
...    res.append(a - b*10)
...    a = b
... 
>>> res.append(a)
>>> out = []
>>> for i, im in enumerate(res):
...     out.append(f'{im}*10**{i}')
... 
>>> ' + '.join(out[::-1])
'2*10**5 + 3*10**4 + 4*10**3 + 5*10**2 + 6*10**1 + 7*10**0'

>>> eval(' + '.join(out[::-1]))
234567
Ответ написан
DarkWood
@DarkWood
И еще вариант:

n = 234567
l = list(str(n))
print(" + ".join([i + "**10**" + str(l[::-1].index(i)) for i in l]))


Вместо прямого указания "n" впишите input.

Что тут происходит: преобразовываем полученное число в список строковых символов. Берем обратный порядок их индексов в этом списке для получения разрядов и выводим всё это через " + " в генераторе списка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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