Indenting clinic() causes program to hang


#1

I'm surprised by the spacing / indenting options by the final else statement requiring clinic()

code:

def clinic():
    print "You've just entered the clinic!"
    print "Do you take the door on the left or the right?"
    answer = raw_input("Type left or right and hit 'Enter'.").lower()
    if answer == "left" or answer == "l":
        print "This is the Verbal Abuse Room, you heap of parrot droppings!"
    elif answer == "right" or answer == "r":
        print "Of course this is the Argument Room, I've told you that already!"
    else:
        print "You didn't pick left or right! Try again."
        clinic()

clinic()

Questions:
why is the clinic() indented with the final else?
Why does python not require a formal means to close a function?
Why is close() called twice?

i tried left indenting clinic() which caused the program to hang.
link:
https://www.codecademy.com/courses/python-beginner-BxUFN/0/1?curriculum_id=4f89dab3d788890003000096


#2

Design of program is made so if a user does not qualify the if or elif conditions,
then in the else block it again calls the function itself.

if you indent it somewhere else.
It will stuck in infinite calling(if you try that on IDLE)
As function call itself indefinite number of times
.

Actually the purpose of this exercise to introduce you to a very important concept of programming called Recursion

More about Recursion here and here


#3

Ah thanks for that. So essentially once the program enters the else clause, it displays an error message and calls the program again.

If the program doesn't go through to the else clause it goes through the two options, the if option and the else if (syntax elif).

The function is only defined within def clinic() but not called. Outside of the function its called.


#4

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.