一些小程序


               
               
                #coding utf-8
#一个除法程序,可以算到小数点后任意位
#参数a为被除数,参数b除数,结果的总位数由参数n指定
#这里a,b,n必须为正整数
def div(a,b,n):
        if n:
                c=a/b
                a=a%b
                print c,
                div(10*a,b,n-1)
div(3,5,9)
# mygcd
def my_gcd(a,b):
    if a == 0:
        return b
    if b == 0:
        return a
    x,y = b,a%b
    return my_gcd(x,y)
print my_gcd(125,1000)
tulei.py在上篇文章-最短路径-里
# coding: utf-8
## 图的遍历算法
##
##深度优先遍历
##参数g是被遍历的图, start是起始结点的名字
##从start结点开始游历, 被扩展过的结点放在gone列表中, 正要被扩展的节点放在now列表中,
##扩展出来的新结点放在now列表的前面
##new列表中存放单个结点新扩展出的结点
##广度优先遍历
##扩展出来的新结点放在now列表的后面
from tulei import *
def search(g,start,how='breadth_first'):
    gone=[]
    now=[start]
    g.who_is(start).father=None
##扩展代码
    extend = """
if how == 'deep_first':
    for i in who.neighbors.keys():
        if i not in gone: #只扩展那些没有被扩展过的结点
            g.who_is(i).father=who
            new.append(i)
    now=new+[i for i in now if i not in new]
else:
    for i in who.neighbors.keys():
        if i not in gone and i not in now:
            g.who_is(i).father=who
            new.append(i)
    now+=new
"""
    while now:
        who=g.who_is(now[0])
        ##new列表中存放单个结点新扩展出的结点
        ##每扩展一个结点要清空一次
        new=[]
        gone.append(now[0])
        del now[0]
        exec(extend)
    return gone
g1=graph('g1')
g1=g1.out()
gone=search(g1,'a')
print gone
for i in gone:
    print i, "'s path is: ",
    x=g1.who_is(i)
    while x.father:
        print x.father,
        x=x.father
    print