def get_option():
    for (name, func) in menu:                  # show menu items
        print '\t%s)%s' % (upper(name[0]), name[1:])
    return lower(raw_input('?'))
 
def run_option(tool):
    for (name, func) in menu:
        if tool == name[0] or tool == name:    # matches menu key?
            return func()                      # run function
    print 'what? - try again'                  # name not found
    return None                                # not really needed...

def interact():
    while 1:
        tool = get_option()
        if run_option(tool): break             # func returned 'true'?
