File tree 2 files changed +41
-13
lines changed
2 files changed +41
-13
lines changed Original file line number Diff line number Diff line change
1
+ # factorial of a positive integer -- https://en.wikipedia.org/wiki/Factorial
2
+
3
+
4
+ def factorial (n : int ) -> int :
5
+ """
6
+ >>> import math
7
+ >>> all(factorial(i) == math.factorial(i) for i in range(20))
8
+ True
9
+ >>> factorial(0.1)
10
+ Traceback (most recent call last):
11
+ ...
12
+ ValueError: factorial() only accepts integral values
13
+ >>> factorial(-1)
14
+ Traceback (most recent call last):
15
+ ...
16
+ ValueError: factorial() not defined for negative values
17
+ """
18
+ if n != int (n ):
19
+ raise ValueError ("factorial() only accepts integral values" )
20
+ if n < 0 :
21
+ raise ValueError ("factorial() not defined for negative values" )
22
+ value = 1
23
+ for i in range (1 , n + 1 ):
24
+ value *= i
25
+ return value
26
+
27
+
28
+ if __name__ == "__main__" :
29
+ n = int (input ("Enter a positivve integer: " ).strip () or 0 )
30
+ print (f"factorial{ n } is { factorial (n )} " )
Original file line number Diff line number Diff line change 1
1
def factorial (n : int ) -> int :
2
2
"""
3
- Calculate the factorial of specified number
3
+ Calculate the factorial of a positive integer
4
+ https://en.wikipedia.org/wiki/Factorial
4
5
5
- >>> factorial(1)
6
- 1
7
- >>> factorial(6)
8
- 720
9
- >>> factorial(0)
10
- 1
11
- >>> factorial(-1)
12
- Traceback (most recent call last):
13
- ...
14
- ValueError: factorial() not defined for negative values
6
+ >>> import math
7
+ >>> all(factorial(i) == math.factorial(i) for i in range(20))
8
+ True
15
9
>>> factorial(0.1)
16
10
Traceback (most recent call last):
17
11
...
18
12
ValueError: factorial() only accepts integral values
13
+ >>> factorial(-1)
14
+ Traceback (most recent call last):
15
+ ...
16
+ ValueError: factorial() not defined for negative values
19
17
"""
20
- if n < 0 :
21
- raise ValueError ("factorial() not defined for negative values" )
22
18
if not isinstance (n , int ):
23
19
raise ValueError ("factorial() only accepts integral values" )
20
+ if n < 0 :
21
+ raise ValueError ("factorial() not defined for negative values" )
24
22
return 1 if n == 0 or n == 1 else n * factorial (n - 1 )
25
23
26
24
You can’t perform that action at this time.
0 commit comments