aboutsummaryrefslogtreecommitdiffstats
path: root/previousAttempts/jython/pydoctest.py
diff options
context:
space:
mode:
Diffstat (limited to 'previousAttempts/jython/pydoctest.py')
-rw-r--r--previousAttempts/jython/pydoctest.py63
1 files changed, 0 insertions, 63 deletions
diff --git a/previousAttempts/jython/pydoctest.py b/previousAttempts/jython/pydoctest.py
deleted file mode 100644
index 863be80..0000000
--- a/previousAttempts/jython/pydoctest.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""
-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.
-
- If the result is small enough to fit in an int, return an int.
- Else return a long.
-
- >>> [factorial(n) for n in range(6)]
- [1, 1, 2, 6, 24, 120]
- >>> [factorial(long(n)) for n in range(6)]
- [1, 1, 2, 6, 24, 120]
- >>> factorial(30)
- 265252859812191058636308480000000L
- >>> factorial(30L)
- 265252859812191058636308480000000L
- >>> 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)
- 265252859812191058636308480000000L
-
- 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
-
-def _test():
- import doctest
- doctest.testmod()
-
-if __name__ == "__main__":
- _test()