Find the average of a list of numbers

    :type numbers: list
    :param numbers: The list of numbers to find the average of.

    :type averagetype: string
    :param averagetype: The type of average to find.

    >>> average([1, 2, 3, 4, 5], 'median')
    3

def average(numbers, averagetype='mean'):
    """
    Find the average of a list of numbers

    :type numbers: list
    :param numbers: The list of numbers to find the average of.

    :type averagetype: string
    :param averagetype: The type of average to find.

    >>> average([1, 2, 3, 4, 5], 'median')
    3
    """

    try:
        # Try to get the mean of the numbers
        statistics.mean(numbers)

    except RuntimeError:
        # Raise a warning
        raise ValueError('Unable to parse the list.')

    # If the lowercase version of the average type is 'mean'
    if averagetype.lower() == 'mean':
        # Return the answer
        return statistics.mean(numbers)

    # If the lowercase version of the average type is 'mode'
    elif averagetype.lower() == 'mode':
        # Return the answer
        return statistics.mode(numbers)

    # If the lowercase version of the average type is 'median'
    elif averagetype.lower() == 'median':
        # Return the answer
        return statistics.median(numbers)

    # If the lowercase version of the average type is 'min'
    elif averagetype.lower() == 'min':
        # Return the answer
        return min(numbers)

    # If the lowercase version of the average type is 'max'
    elif averagetype.lower() == 'max':
        # Return the answer
        return max(numbers)

    # If the lowercase version of the average type is 'range'
    elif averagetype.lower() == 'range':
        # Return the answer
        return max(numbers) - min(numbers)

    # Raise a warning
    raise ValueError('Invalid average type provided.')