一些小程序
#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