函数式编程的好处之一

那就是,调整代码很方便.

这个感慨来自于今天在知道上回答一个网友的问题:

http://zhidao.baidu.com/question/2201936720543592228.html?sort=6&old=1#here

其他人的答案都是命令式.结果提问者针对他们的回答,一会说我是py3.0,str出错,一会又说最后结果要有Done!字符.

虽然这是提问者自己不善于提问,但是我可以根据需求的变化,修改一两个字符就OK.

然而命令式就没这么简单了...到处都需要修改.

 

这是我的答案:

def show(a,b):
    reverse= True if a>b else False
    res=[]
    def recur(a,b):
        if abs(a-b)==1:
            res.extend([a,b,b])
            return res
        res.extend([a,b])
        if a==b:            
            return res
        else:
            return recur(a-1,b+1) if reverse else recur(a+1,b-1)
    return '%s Done!' % ' '.join(map(unicode,recur(a,b)))
 
while 1:
    num1 = input("please input num1: \n")
    num2 = input("please input num2: \n")
    print "Num1:%s\nNum2:%s\n%s\n"%(num1,num2,show(num1,num2))
    if raw_input("continue?(y/n)?").lower()=='n':
        break

 

posted @ 2013-10-31 11:54  LisPythoniC  阅读(398)  评论(0编辑  收藏  举报