Return a random int in the range [lower, upper].

    Raises ValueError if any is lower than 0, and TypeError if any is not an
    integer.

def randbetween(lower: int, upper: int) -> int:
    """Return a random int in the range [lower, upper].

    Raises ValueError if any is lower than 0, and TypeError if any is not an
    integer.

    """
    if not isinstance(lower, int) or not isinstance(upper, int):
        raise TypeError('lower and upper must be integers')
    if lower < 0 or upper <= 0:
        raise ValueError('lower and upper must be greater than zero')

    return randbelow(upper - lower + 1) + lower