~/home_Python/apple_/Factorial/factorial.py
|INDEX| Python.use(better)
》作業中です《
#! /usr/bin/env python # coding: utf-8 ## ---------------------------------------- ## ## (C) Copyright 2000-2009, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部 ## ## ---------------------------------------- # ..+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 """ >>> None >>> ## ---------------------------------------- >>> None version: #1.0.05 """ ## ---------------------------------------- """ """ ## ---------------------------------------- SPEC = "" ## ---------------------------------------- def step00(): """while n>1:""" def fact(n): acc = 1 while n>1: acc *= n n -= 1 return acc ## ---------------------------------------- local = locals() #@: ex_fact(SPEC, local) ## ---------------------------------------- def step01(): """for e in range(n,1,-1):""" def fact(n): acc = 1 for e in range(n,1,-1): acc *= e return acc ## ---------------------------------------- local = locals() #@: ex_fact(SPEC, local) ## ---------------------------------------- def step02(): """if not n>1:""" def fact(n): # recursive function if not n>1: return 1 return n*fact(n-1) ## ---------------------------------------- local = locals() #@: ex_fact(SPEC, local) ## ---------------------------------------- from functools import reduce def step03(): """reduce""" def fact(n): return reduce(lambda acc,e: acc*e, range(n,1,-1), 1) ## ---------------------------------------- local = locals() #@: ex_fact(SPEC, local) ## ---------------------------------------- ## ---------------------------------------- ## ---------------------------------------- def print_(source, local): #@: print(">>>",source) eval(compile(source,"","single"),globals(),local) ## ---------------------------------------- def ex_fact(spec, local): n = 6 for e in range(6): X = "fact({0})".format(e) print_(X, local) ## ======================================== s = "step" DIR = [e for e in dir() if e.startswith(s)] DIR = dict((i,e) for i,e in enumerate(DIR)) DIR = list(DIR.items()); DIR.sort() def ex(): n = len(DIR)/10+1 for k,v in DIR: source = ''' x = eval("%%s.__doc__"%%v) print("%%%dd: %%s -- %%s"%%(k,v,x)) '''%n eval(compile(source,"","exec")) def do_all(): ## for k,v in DIR: eval("%s()"%v) for k,v in DIR: do(k) def do(k=None): if k is None: ex(); return try: k,v = DIR[k] print(">>> #","-"*50,v) eval("%s()"%v) except IndexError: print("(x_x) too bad ... %s"%k) ## ---------------------------------------- from time import ctime def time_stamp(): print("="*24) print(ctime()) print("="*24) ## ---------------------------------------- from doctest import testmod ##from sys import argv if __name__=='__main__': ## print("%s #1.0a*0"%argv[0].split("/")[-1]) time_stamp() testmod() ## print("... %s #1.0a"%__file__) ## ========================================
Last updated♪2010/03/14