def request(label, selection, blocklist=()):
    """
        Request an input from the user against an allowlist and/or a blocklist.
        Will continue to request user until an acceptable value is entered.
        ...
        Parameters
        ---
        label: string
            a instruction for the user
        selection: array, list, tuple, iterable
            a list to check whether user input is found within the list
        blocklist: array, list, tuple, iterable (optional)
            a list to check whether user input is not found within the list
    """
    selected = input(str(label))
    selected = selected.strip()
    if (selected in selection) and not (selected in blocklist):
        return selected
    return request(label, selection, blocklist)