diff --git a/maths/factorial.py b/maths/factorial.py index ba61447c7564..f2e3ae094e57 100644 --- a/maths/factorial.py +++ b/maths/factorial.py @@ -6,7 +6,6 @@ def factorial(number: int) -> int: """ Calculate the factorial of specified number (n!). - >>> import math >>> all(factorial(i) == math.factorial(i) for i in range(20)) True @@ -14,6 +13,10 @@ def factorial(number: int) -> int: Traceback (most recent call last): ... ValueError: factorial() only accepts integral values + >>> factorial(1.5) + Traceback (most recent call last): + ... + ValueError: factorial() only accepts integral values >>> factorial(-1) Traceback (most recent call last): ... @@ -25,7 +28,7 @@ def factorial(number: int) -> int: >>> factorial(0) 1 """ - if number != int(number): + if not isinstance(number, int): raise ValueError("factorial() only accepts integral values") if number < 0: raise ValueError("factorial() not defined for negative values") @@ -39,15 +42,18 @@ def factorial_recursive(n: int) -> int: """ Calculate the factorial of a positive integer https://en.wikipedia.org/wiki/Factorial - >>> import math - >>> all(factorial(i) == math.factorial(i) for i in range(20)) + >>> all(factorial_recursive(i) == math.factorial(i) for i in range(20)) True - >>> factorial(0.1) + >>> factorial_recursive(0.1) Traceback (most recent call last): ... ValueError: factorial() only accepts integral values - >>> factorial(-1) + >>> factorial_recursive(1.5) + Traceback (most recent call last): + ... + ValueError: factorial() only accepts integral values + >>> factorial_recursive(-1) Traceback (most recent call last): ... ValueError: factorial() not defined for negative values @@ -63,6 +69,5 @@ def factorial_recursive(n: int) -> int: import doctest doctest.testmod() - n = int(input("Enter a positive integer: ").strip() or 0) print(f"factorial{n} is {factorial(n)}")