def errTest(n, d):
    try:
        result = n / d
    except:
        print("An error occurred while dividing {} by {}. Returning None".format(n, d))
        result = None
    return result
        
def errTest2(n, d):
    result = None
    try:
        result = n / d
    except TypeError as errorMsg:
        print("A type error occurred. Message was: ", errorMsg)
    except ZeroDivisionError:
        print("You can't divide by zero! Returning None")
    return result

def fact(n):
    if n <= 0:
        raise ValueError("Input value ({}) must be greater than 0!".format(n))
    if (n == 1):
        return 1
    else:
        return (n * fact(n-1))
    
def fact2(n):
    assert(n > 0)
    
    if (n == 1):
        return 1
    else:
        return (n * fact2(n-1))


   
