Рекурсивная функция, которая сохраняет число при определенных условиях - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь создать функцию в Python, которая с помощью рекурсии сохраняет определенное число, если оно больше или равно другому, ранее предоставленному во входных данных (и сохраненному в другой переменной).

a = 6

def attempts(k):
    n = int(input("How many attempts do you want to make? "))
    if n>=k:
        return n
    else:
        print("You must make at least {} attempts to play!".format(k))
        attempts(k)

b = attempts(a)

Проблема в том, что, если я не сразу вставлю «правильный» номер, переменная «b» станет NoneType. Как я могу решить эту проблему? Извините за любые опечатки, я не носитель языка.

Ответы [ 3 ]

3 голосов
/ 30 января 2020

Измените последнюю строку функции на:

return attempts(k)

В настоящее время результаты, начиная с первого рекурсивного вызова (если он происходит), отбрасываются, в результате чего None возвращается самой внешней звоните.

1 голос
/ 30 января 2020

В операторе else вы ничего не возвращаете, устанавливая b равным нулю. Добавьте оператор return в оператор else и верните все, что вы хотите, чтобы b было равно, если подходит оператор else.

Как работает ваш код прямо сейчас, вы должны добавить return attempts(k) в свой оператор else и удалить текущая последняя строка, attempts(k) Это будет работать так же, за исключением того, что b будет иметь значение.

0 голосов
/ 30 января 2020

В случае else вы оцениваете attempts(k), но не возвращаете его. Так что это оценивается как None. Изменить

attempts(k)

на

return attempts(k)
...