Задать вопрос
@VishenkaNaTorte

Как посчитать сумму цифр числа пока оно не станет однозначным?

На вход подается строка. Принцип работы такой:

39492 - сумма цифр 27. У 27 сумма цифр 9. Программа завершается.

str = input()
sum = 0
for i in range(len(str)):
    sum += int(str[i])


То, что я написал, действительно считает сумму цифр в числе, но мне надо считать это еще раз, пока число не будет однозначным.
Я понял, что здесь нужен while, но не знаю как реализовать.

p.s. с циклом while пробовал, но не вышло ничего

i = 0
while (len(str) >= 2):
    b += int(str[i])
    i+=1


подскажите, как сделать, пожалуйста
хотя бы идею
я совсем новичок
  • Вопрос задан
  • 1366 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 1
0xD34F
@0xD34F
def countDigitsSum(num):
  return num if num < 10 else countDigitsSum(sum(map(int, str(num))))

или

def countDigitsSum(num):
  while num > 9:
    num = sum(int(n) for n in str(num))

  return num
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Не нужны тут ни цикл, ни рекурсия:
def digital_root(n):
    return n % 9 or n and 9

s = input()
r = digital_root(int(s))

https://en.wikipedia.org/wiki/Digital_root
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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