[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
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
Там две строки с вызовом telo(n) и в обеих не хватает return.
 

s10n

Создатель
Регистрация
6 Авг 2015
Сообщения
10
Реакции
1
А что хоть считаем? А то из такого кода не очень понятно. Если сумму всех цифр пока не останется 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))
 

Xardas4522

Создатель
Регистрация
7 Окт 2016
Сообщения
10
Реакции
4
Вот так будет верно, просто нужно добавить 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 будет верно выводить информацию
 
Сверху