перемножение элементов списка

Не понимаю, в чем ошибка.

Хочу написать функцию для перемножения цифр в числе пока оно не станет однозначным:

def count(a):
    while len(str(a)) >1 :
        res = 1
        for i in range(len(str(a))):
            res *= int(str(a)[i])
    print(res)

count(999)

При первом проходе получается верный ответ 729, а дальше 81 и 9. Почему так получается?


Ответы (1 шт):

Автор решения: Dareten
def count(a):
    while a >= 10:
        res = 1
        for i in range(len(str(a))):
            res *= int(str(a)[i])
        a = res
    print(res)

count(999)
# вывод 2

Ошибка была в том, что вы не изменяли значение a, а проверяли лишь изначальное, создавая бесконечный цикл.

→ Ссылка