# Based on https://stackoverflow.com/a/3041990
def query_yes_no(question, default='yes'):
    '''Ask a yes/no question via input() and return their answer.
    'question' is a string that is presented to the user.
    'default' is the presumed answer if the user just hits <Enter>.
        It must be 'yes' (the default), 'no' or None (meaning
        an answer is required of the user).
    The 'answer' return value is True for 'yes' or False for 'no'.
    '''
    valid = {'yes': True, 'y': True, 'ye': True, 'no': False, 'n': False}
    if default is None: prompt = ' [y/n] '
    elif default == 'yes': prompt = ' [Y/n] '
    elif default == 'no': prompt = ' [y/N] '
    else: raise ValueError('invalid default answer: "%s"' % default)
    while True:
        print(question + prompt, end='')
        choice = input().lower()
        if default is not None and choice == '': return valid[default]
        elif choice in valid: return valid[choice]
        else: print('Please respond with "yes" or "no" '
            '(or "y" or "n").\n')

# Not based on anything
def query_string(question, default=None):
    ''' Present a qusetion to the user via input() and return their answer as a
    string. If a default is provided, then it is returned if the user just hits
    <Enter>. The default can be an empty string, and even none-string values
    (except None). It will always be wrapped in str() before it is returned,
    however. '''
    if default == None: prompt = ' '
    else: prompt = ' (def: "{}") '.format(default)
    while True:
        print(question + prompt, end='')
        answer = input()
        if answer: return answer
        if not answer and default != None: return str(default)

@@ -1039,17 +1039,41 @@
 %5Cn')%0A%0A# 
-N
+Remaining functions are n
 ot based
@@ -1085,16 +1085,17 @@
 nything%0A
+%0A
 def quer
@@ -1662,16 +1662,16 @@
  answer%0A
-
         
@@ -1717,16 +1717,710 @@
 rn str(default)%0A
+%0Adef query_int(question, default=None):%0A    while True:%0A        answer = query_string(question, default)%0A        try: _ = int(answer)%0A        except ValueError as e: continue%0A        else: return int(answer)%0A%0Adef query_list(question, choices):%0A    ''' Present a list of choices to the user and return the one they picked.%0A    '''%0A    assert len(choices) %3E 0%0A    print(question)%0A    for i, choice in enumerate(choices): print('%7B:3d%7D %7B%7D'.format(i, choice))%0A    while True:%0A        print(question, end=' ')%0A        answer = input()%0A        try: answer = int(answer)%0A        except ValueError as e: continue%0A        if answer %3C 0 or answer %3E len(choices)-1: continue%0A        return choices%5Banswer%5D%0A

Add query_int and query_list