I'm having issue with allowing a function to call on variables set by another function. I believe I know how to do this with single variables, but my code requires it be done with multiple variables, a challenge I've struggled with for hours. I've read much about ways others seem to have done this but I can't find success in implementing them.
#gathers the user's requests
def ask():
    userw = int(input('How wide? '))
    userh = int(input('How tall? '))
    userc = input('What string to use? ')
    userc_len = int(len(userc))
    return (userw, userh, userc, userc_len)
#draws the rows of the box. First the top with the topbot function, then the body with body(), then the bottom with topbot again
def draw(w, h, c, c_len):
    def topbot(w_, c_):
        for x in range(w_):
            print (c_, end ='')
            print ('\n')
    def body(w_, h_, c_, c_len_):
        for x in range(h_-2):
            print (c_, end = '')
            for x in range(w_-2):
                print(' ' * c_len_, end = '')
            print (c_)
    topbot(w, c)
    body(w, h, c, c_len)
    topbot(w, c)
#begins draw    
draw(userw, userh, userc, userc_len)   
The problem begins when the draw function tries to begin with the arguments of userw, userh, userc, userc_len, but can't find them: 
NameError: name 'userw' is not defined
is returned when I try to run it.
- Is it correct to define topbotandbodywithin thedrawfunction and manage the arguments how I did?
- How do I return the four variables from askin a manner such thatdrawcan then use them as arguments?
 
     
    