Этот вопрос кажется немного конкретным, и для этого я извиняюсь, но он меня озадачил. Я пишу себе генератор паролей, который берет строку (ака URL-адрес веб-сайта) и обрабатывает ее в безопасный пароль, который нельзя отменить на основе имени веб-сайта.Как вернуть значение из рекурсивной функции Python?
В части кода, я создал рекурсивную функцию, которая выглядит следующим образом:
def get_number(n = 0, nums = ''):
for i in range(0, len(url)):
#both n and nums are changed
if len(nums) < num_length:
get_number(n, nums)
else:
print(nums)
return(nums)
...
print(get_number())
Я бы ожидать «Nums» для вывода в два раза, так как я печатаю это в блоке else и напечатать ответ позже. Но если он проходит через рекурсивный цикл, «nums» печатается из блока else, и функция возвращает «None». Если if len(nums) < num_length
ошибочно в первый раз, то оно возвращает правильное значение.
Зачем ему возвращать «Нет», если я проверил, что объект, который он возвращает, на самом деле не является «Нет»?
Я немного новичок в Python, они обрабатывают рекурсии по-другому?
Спасибо за ваше время
Edit:
проблема исправлена. Забыл оператор возврата при рекурсивном вызове. Спасибо: D
Посмотрел прямо над этим. Большое спасибо –
Добро пожаловать! Если ваша проблема исправлена, не могли бы вы отметить ответ как принятый? Это помогает фильтру для людей, которые ищут ответы на неотвеченные вопросы :) – Karin