Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2019 17:33:55

9_Andr
Зарегистрирован: 2019-02-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работает return ?

Пытаясь забороть рекурсию, стал решать задачки и столкнулся с неожиданной проблемой:
Не получается вытащить значение из программы.
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 получить можно, просто не применяя никаких операций.

Офлайн

#2 Фев. 18, 2019 02:51:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Как работает return ?

9_Andr
На выходе получаю None
Потому что у тебя там пропущен return.

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

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



Офлайн

#3 Фев. 22, 2019 18:58:37

9_Andr
Зарегистрирован: 2019-02-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работает return ?

py.user.next
Но если я напишу return вне условия я, очевидно, не смогу проверить на это условие x
Наверно, я чего-то не вижу.

Офлайн

#4 Фев. 22, 2019 19:33:28

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Как работает return ?

9_Andr
Но если я напишу return вне условия я, очевидно, не смогу проверить на это условие x
Если return до условия, то Ваше утверждение справедливо. Если return расположен после условия или целого каскада условий, тогда Ваше утверждение неправильно. В этом случае на return вне условия попадём только, если условие не будет выполнено где-нибудь в условии. Ведь выполнение условия выдаст return внутри условия и прощай оставшаяся часть кода, расположенная дальше этого условия.

Офлайн

#5 Фев. 23, 2019 10:40:50

9_Andr
Зарегистрирован: 2019-02-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работает return ?

Как ни пытался менять местами 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')

Офлайн

#6 Фев. 23, 2019 10:45:56

9_Andr
Зарегистрирован: 2019-02-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как работает return ?

Табуляция пропадает

Прикреплённый файлы:
attachment РЕ КУР СИ Я.py (223 байта)

Офлайн

#7 Фев. 24, 2019 16:58:28

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Как работает return ?

9_Andr
Табуляция пропадает
Помещай код в тэг. Для этого в форме сообщения, рядом со смайликом имеется голубой значок <> на фоне листа бумаги. Попробуй навести на него мышку и выбрать из списка Python. Создастся тэг, внутрь которого можно поместить твой питоновский код. Форматирование никуда не будет деваться.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version