第一题简便的话可以直接用title()函数来实现。 第二题简单不做重复。 第三题我的方法如下: from functools import reduce def str2float(s): def fix(x,y): return x10+y def str2num(n): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[n] a,b=s.split('.') return reduce(fix,map(str2num,a))+reduce(fix,map(str2num,b))/(10*len(b)) print(str2float('123.456'))
fix函数返回是10*x+y str2float函数返回处最后是/(10**len(b)) 直接复制过来,没有修改。。。
方法简单很好!但是感觉没有考虑到一些特殊情形,例如‘0’、‘.123’等不含小数点或个别畸形情况。还需要优化
嗯,确实需要再优化一下特殊的情况。感谢指出问题
Sign in to make a reply
孤云飘飘zhao
第一题简便的话可以直接用title()函数来实现。 第二题简单不做重复。 第三题我的方法如下: from functools import reduce def str2float(s): def fix(x,y): return x10+y def str2num(n): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[n] a,b=s.split('.') return reduce(fix,map(str2num,a))+reduce(fix,map(str2num,b))/(10*len(b)) print(str2float('123.456'))