def get_input(prompt, check, *, redo_prompt=None, repeat_prompt=False):
    if isinstance(check, str):
        check = (check,)
    to_join = []
    for item in check:
        if item:
            to_join.append(str(item))
        else:
            to_join.append("''")
    prompt += " [{}]: ".format('/'.join(to_join))
    if repeat_prompt:
        redo_prompt = prompt
    elif not redo_prompt:
        redo_prompt = "Incorrect input, please choose from {}: " \
                      "".format(str(check))
    if callable(check):
        def _checker(r): return check(r)
    elif isinstance(check, tuple):
        def _checker(r): return r in check
    else:
        raise ValueError(RESPONSES_ERROR.format(type(check)))
    response = input(prompt)
    while not _checker(response):
        print(response, type(response))
        response = input(redo_prompt if redo_prompt else prompt)
    return response