~/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