# HG changeset patch # User Jeff Hammel # Date 1472768123 25200 # Node ID 47a434dd506828ce256aa0727ac220cff9f27cfd # Parent d564f7ad8294df6a71c68a86ef975434c6fb06d3 example: factorial using reduce diff -r d564f7ad8294 -r 47a434dd5068 python/example/factorial.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/example/factorial.py Thu Sep 01 15:15:23 2016 -0700 @@ -0,0 +1,34 @@ +#!/usr/bin/env python +"""how many 0s are in a factorial""" + +import argparse +import sys + +def factorial(N): + """factorial of `N`""" + if N == 1: + return 1 + return reduce(int.__mul__, range(2, N+1)) + +def factorial_zeros(N): + """how many 0s are in a factorial?""" + + return N/5 + +def main(args=sys.argv[1:]): + """CLI""" + + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('N', type=int, nargs='+') + options = parser.parse_args(args) + + # sanity + if any([i < 1 for i in options.N]): + parser.error("Input values must be >= 1") + + for i in options.N: + f = factorial(i) + print f + +if __name__ == '__main__': + main()