摘要: 以前想不通,今天在写代码时不知怎么的,偶然就发现了答案..比如说把某个字符串s中所有"00"及更长的'00'统统换为'0'.最后结果中不能包含'00'.00001100-->0110显然,s.replace('00','0')是不够的.命令式解法:def wrapperI(v): while 1: if '00' in v: v=v.replace('00','0') else: break return v函数式解法:def wrapper 阅读全文
posted @ 2013-10-31 22:44 LisPythoniC 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 现在心情还是有点小小激动的.因为我发现递归开始渗透到有实际意义的问题的求解中了.把数字1111转换为"壹仟壹佰壹拾壹",这应该是银行记录和打印数字的基础环节了.我以前看有人说,递归不是人类自然的思考方式。现在我感到非常不可理解,因为我感觉完全相反.在今天这个程序的实现上,我是自然而然地想到用递归来求解这个复杂的问题.因为我一开始只知道一些简单的情况该怎么做,例如:如果给的是1位数,显然非常简单,按照numDic字典直接给结果就行.如果给的是2位数,也不难.取十位数,按照numDic字典返回字符,然后和单位"十"连接,最后再和个位数字符连接.如果给的是3位 阅读全文
posted @ 2013-10-31 21:45 LisPythoniC 阅读(2224) 评论(0) 推荐(1) 编辑
摘要: 那就是,调整代码很方便.这个感慨来自于今天在知道上回答一个网友的问题: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=[] 阅读全文
posted @ 2013-10-31 11:54 LisPythoniC 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 重写方法的利器-superclass ilist(list): def __init__(self,dft=None,r=list()): super(ilist, self).__init__(r) #list.__init__(self,r) self.dft=dft def __getitem__(self,n): while len(self) >> 0[0, 0, 0, 0, 0]10由于刚开始不知道super,我是这样模拟x[n]的:class ilist(list): def __init__(self,d... 阅读全文
posted @ 2013-10-31 01:06 LisPythoniC 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 这个方法比较好:class DataHolder: def __init__(self, value=None): self.value = value def set(self, value): self.value = value return value def get(self): return self.valuedh = DataHolder()if dh.set(something()): # do something with dh.valueelif dh.set(somethingelse()): ... 阅读全文
posted @ 2013-10-31 00:19 LisPythoniC 阅读(210) 评论(0) 推荐(0) 编辑