Bischoop <[email protected]> writes: > On 2020-12-12, Joe Pfeiffer <[email protected]> wrote: >> Bischoop <[email protected]> writes: >> >>> I've function asking question and comparing it, if is not matching 'yes' >>> it does call itself to ask question again. The problem is that when >>> function is called second time it returns old value or with additional >>> else statement it returns none. >>> >>> Code: https://bpa.st/KVGA >> >> It calls itself again, but what does it return in that case? > > I've stated it returns old value that I've input first time, anyway > output is also inluded in a paste but since you've asked:
Sorry, my question wasn't clear. What I meant was, "in your return
statement, what are you returning"?
You need to be returning the value from the recursive call.
> def question():
> ask = input("Are you OK?:").lower()
> if ask != 'yes':
> question()
> return ask
>
> print (question())
>
> #output:
> Are you OK?:no
> Are you OK?:no
> Are you OK?:yes
> no
>
> ---------------------------------------
> #Another way with 'elif' statment returns none
>
>
> def question():
> ask = input("Are you OK?:").lower()
> if ask != 'yes':
> question()
> elif ask == 'yes':
> return ask
>
> print (question())
>
> #output:
> Are you OK?:no
> Are you OK?:yes
> None
>
> #Tried also nested
> functions, same results:
>
> def question():
> ask = input("Are you
> OK?:").lower()
>
> def
> check_question(n):
> if ask
> !=
> 'yes':
>
> question()
>
> else:
>
> return
>
> ask
>
>
> m
>
> =
>
> check_question(ask)
>
> print
>
> (m)
>
> question()
>
>
> #output:
>
> Are
>
> you
>
> OK?:no
>
> Are
>
> you
>
> OK?:yes
>
> None
>
>
> Process
>
> finished
>
> with
>
> exit
>
> code
>
> 0
--
https://mail.python.org/mailman/listinfo/python-list
