[Python] Вложенная функция, как передать значение

funman

Знаток
Регистрация
28 Дек 2007
Сообщения
163
Реакции
26
Простой код.
Код:
def root(n):
    def telo(n):
        num=str(n)
        n=0
       
        for i in range(0,len(num)):
            n+=int(num[i])   
        print("do proverki n=",n)
        if (len(str(n)))!=1:
            telo(n)
        else:print("else n=",n);return(n)
    telo(n)
   
print(root(942))

по выполнению получаем:
Код:
do proverki n= 15
do proverki n= 6
else n= 6
None

По результату выполнения мне нужно передать ответ 6, в функцию root, чтобы она не отдавала None
 
Там две строки с вызовом telo(n) и в обеих не хватает return.
 
А что хоть считаем? А то из такого кода не очень понятно. Если сумму всех цифр пока не останется 1 цифра то рекурсия вполне себе:
def summa(n:(
if len(str(n))!=1:
num = 0
for a in str(n:(
num += int(a)​
return summa(num)​
else:
return n​

b = 942
print(summa(b))
 
Вот так будет верно, просто нужно добавить return к выводу

Код:
def root(n):
    def telo(n):
        num = str(n)
        n = 0

        for i in range(0, len(num)):
            n += int(num[i])
        print("do proverki n=", n)
        if (len(str(n))) != 1:
            return(telo(n))
        else:
            print("else n=", n);return (n)

    return(telo(n))


print(root(942))
Тогда функция root будет верно выводить информацию
 
Назад
Сверху