Python/maths/factorial_python.py

35 lines
837 B
Python
Raw Normal View History

def factorial(input_number: int) -> int:
"""
Calculate the factorial of specified number
>>> factorial(1)
1
>>> factorial(6)
720
>>> factorial(0)
1
>>> factorial(-1)
Traceback (most recent call last):
...
ValueError: factorial() not defined for negative values
>>> factorial(0.1)
Traceback (most recent call last):
...
ValueError: factorial() only accepts integral values
"""
if input_number < 0:
raise ValueError("factorial() not defined for negative values")
if not isinstance(input_number, int):
raise ValueError("factorial() only accepts integral values")
result = 1
for i in range(1, input_number):
result = result * (i + 1)
return result
if __name__ == "__main__":
import doctest
doctest.testmod()