Mercurial > hg > config
comparison python/example/factorial.py @ 784:47a434dd5068
example: factorial using reduce
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Thu, 01 Sep 2016 15:15:23 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
783:d564f7ad8294 | 784:47a434dd5068 |
---|---|
1 #!/usr/bin/env python | |
2 """how many 0s are in a factorial""" | |
3 | |
4 import argparse | |
5 import sys | |
6 | |
7 def factorial(N): | |
8 """factorial of `N`""" | |
9 if N == 1: | |
10 return 1 | |
11 return reduce(int.__mul__, range(2, N+1)) | |
12 | |
13 def factorial_zeros(N): | |
14 """how many 0s are in a factorial?""" | |
15 | |
16 return N/5 | |
17 | |
18 def main(args=sys.argv[1:]): | |
19 """CLI""" | |
20 | |
21 parser = argparse.ArgumentParser(description=__doc__) | |
22 parser.add_argument('N', type=int, nargs='+') | |
23 options = parser.parse_args(args) | |
24 | |
25 # sanity | |
26 if any([i < 1 for i in options.N]): | |
27 parser.error("Input values must be >= 1") | |
28 | |
29 for i in options.N: | |
30 f = factorial(i) | |
31 print f | |
32 | |
33 if __name__ == '__main__': | |
34 main() |