Найти - Пользователи
Полная версия: Как работает return ?
Начало » Python для новичков » Как работает return ?
1
9_Andr
Пытаясь забороть рекурсию, стал решать задачки и столкнулся с неожиданной проблемой:
Не получается вытащить значение из программы.
n = 15
def f(x):
if x == 1:
return x
elif x > 0:
f(x - 5)
f(x - 3)
print( f(n) )

На выходе получаю None
Как так?

Если что, условие звучит так:
Определить можно ли с использованием только операций «прибавить 3» и «прибавить 5» получить из числа 1 число N (N - натуральное, не превышает 106). Разумеется, само число 1 получить можно, просто не применяя никаких операций.
py.user.next
9_Andr
На выходе получаю None
Потому что у тебя там пропущен return.

  
>>> def f():
...     if False:
...         return 1
... 
>>> print(f())
None
>>>

  
>>> def f():
...     if False:
...         return 1
...     return 2
... 
>>> print(f())
2
>>>
9_Andr
py.user.next
Но если я напишу return вне условия я, очевидно, не смогу проверить на это условие x
Наверно, я чего-то не вижу.
Rafik
9_Andr
Но если я напишу return вне условия я, очевидно, не смогу проверить на это условие x
Если return до условия, то Ваше утверждение справедливо. Если return расположен после условия или целого каскада условий, тогда Ваше утверждение неправильно. В этом случае на return вне условия попадём только, если условие не будет выполнено где-нибудь в условии. Ведь выполнение условия выдаст return внутри условия и прощай оставшаяся часть кода, расположенная дальше этого условия.
9_Andr
Как ни пытался менять местами return, ничего не вышло. Узнал про global и все запустилось
n = int(input())
t = ‘NO’
def f(x):
if x == 1:
global t
t = ‘YES’
elif x > 0:
f(x - 5)
f(x - 3)
if n < 20:
f(n)
print(t)
else:
print('YES')
9_Andr
Табуляция пропадает
Rafik
9_Andr
Табуляция пропадает
Помещай код в тэг. Для этого в форме сообщения, рядом со смайликом имеется голубой значок <> на фоне листа бумаги. Попробуй навести на него мышку и выбрать из списка Python. Создастся тэг, внутрь которого можно поместить твой питоновский код. Форматирование никуда не будет деваться.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB