Как вывести значение функции

Задача состоит в том, чтобы посчитать сумму цифр числа, например: 54 => 5 + 4 = 9; 1457 => 1 + 4 + 5 + 7 = 17 => 1 + 7 = 8 Когда делал не через return, а через print, то все работало. Подскажите, как передать значение функции для вывода числа.

def func(num):

    if len(str(num)) == 1:
        return num

    elif len(str(num)) == 2:
        k = 0
        for i in str(num):
            k += int(i)
        func(num=k)

    else:
        k = 0
        for i in str(num):
            k += int(i)
        if len(str(k)) >= 2:
            func(num=k)

print(func(952))

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

Автор решения: chinger12

Вместо func(num=k) на 10 и 17 строках напишите return k

или замените свою функцию на эту

def func(num):
    return sum(int(x) for x in str(num))
→ Ссылка
Автор решения: pb318
def sumnum(n: int) -> int:
    result = 0
    while n > 0:
        result += n % 10
        n = n // 10
    return result
→ Ссылка
Автор решения: Эникейщик

Выкидываем все if-elif-else, которые тут совершенно не нужны и добавляем return, который почему-то есть в первой ветке, но нет во всех других

def func(num):
    k = 0
    for i in str(num):
        k += int(i)
    return k

Если же нужно считать до тех пор, пока результат не станет однозначным, то можно использовать рекурсию:

def func(num):
    k = 0
    if num < 10:           # однозначное число
        return num         # считать нечего, результат уже готов
    else:                  # двух- и болеезначное число
        for i in str(num): # считаем сумму цифр
            k += int(i)
        return func(k)     # передаем результат в эту же функцию, чтобы найти сумму цифр нового числа
→ Ссылка