def get_input(prompt, check, *, redo_prompt=None, repeat_prompt=False):
    """
    Ask the user to input something on the terminal level, check their response
    and ask again if they didn't answer correctly
    """
    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
Ask the user to input something on the terminal level, check their response
    and ask again if they didn't answer correctly