def factorial(n): if type(n) is not int: if type(n) is float: m = int(n) return factorial(m - 1) * m if type(n) is str: return None else: if n < 0: return None if n == 0: return 1 return factorial(n - 1) * n def digits_r2l(n): if n % 1 != 0 or n <= 0: return None else: return str(n % 10) def digits_l2r(n): pass ################################################# def verifier(test_name, actual, expected): print(test_name) if actual != expected: print("=======> FAILED! <=======") print(f"Got value <{actual}>") print(f"Expected value is <{expected}>") else: print("PASSED") print() fact_tests = [(0, 1), (1, 1), (7, 5040), (-1, None), (1.1, 1), (5.4, 120), ("Str", None), (True, None)] dr2l_tests = [(100, "0 0 1"), (9871, "1 7 8 9"), (1, "1"), (-100, None), (1.1, None), (5.4, None), ("Str", None), (True, None)] dl2r_tests = [(100, "1 0 0"), (9871, "9 8 7 1"), (1, "1"), (-100, None), (1.1, None), (5.4, None), ("Str", None), (True, None)] for i in range(len(fact_tests)): verifier(f"Factorial test {i+1}", factorial(fact_tests[i][0]), fact_tests[i][1]) for i in range(len(dr2l_tests)): verifier(f"DR2L test {i+1}", digits_r2l(dr2l_tests[i][0]), dr2l_tests[i][1]) for i in range(len(dl2r_tests)): verifier(f"DL2R test {i+1}", digits_l2r(dl2r_tests[i][0]), dl2r_tests[i][1])