Feb-28-2024, 08:22 AM
hi
in the below code:
why n<0 has been not used?namely, why it is not written as if n<0:?
is there any profit from using not?plz, explain.
in the line( if n+1 == n: ), for large value of n as 1e100, this is True and if block is runned.
why for a very large value of n, this condition is True? plz, explain.
in the above subject, what is the smallest value for n that the condition is satisfied? how the value is obtained?
last question:
What is the difference or profit of using not 3==2 with respect to (3 !=2) using in if statement?
thanks
in the below code:
"""
This is the "example" module.
The example module supplies one function, factorial(). For example,
>>> factorial(5)
120
"""
def factorial(n):
"""Return the factorial of n, an exact integer >= 0.
>>> [factorial(n) for n in range(6)]
[1, 1, 2, 6, 24, 120]
>>> factorial(30)
265252859812191058636308480000000
>>> factorial(-1)
Traceback (most recent call last):
...
ValueError: n must be >= 0
Factorials of floats are OK, but the float must be an exact integer:
>>> factorial(30.1)
Traceback (most recent call last):
...
ValueError: n must be exact integer
>>> factorial(30.0)
265252859812191058636308480000000
It must also not be ridiculously large:
>>> factorial(1e100)
Traceback (most recent call last):
...
OverflowError: n too large
"""
import math
if not n >= 0:
raise ValueError("n must be >= 0")
if math.floor(n) != n:
raise ValueError("n must be exact integer")
if n+1 == n: # catch a value like 1e300
raise OverflowError("n too large")
result = 1
factor = 2
while factor <= n:
result *= factor
factor += 1
return result
if __name__ == "__main__":
import doctest in the above code,the line (if not n >= 0:):why n<0 has been not used?namely, why it is not written as if n<0:?
is there any profit from using not?plz, explain.
in the line( if n+1 == n: ), for large value of n as 1e100, this is True and if block is runned.
why for a very large value of n, this condition is True? plz, explain.
in the above subject, what is the smallest value for n that the condition is satisfied? how the value is obtained?
last question:
What is the difference or profit of using not 3==2 with respect to (3 !=2) using in if statement?
thanks
