def str2float(s): s1,s2 = s.split('.') def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] return reduce(lambda x,y:x*10+y,map(char2num,s1))+reduce(lambda x,y:x/10+y,map(char2num,('0'+s2)[::-1]))
我的方法是先把字符串从'.'分开,大于1的部分和str2int是一样的,小于1的部分采用逆序并进行除法的方式。 但问题是除法只会进行比s2的长度少一次,所以我在s2最前面添加了一个0. 不知道是不是还有更优雅的方式解决reduce次数少1次的问题。
Sign in to make a reply
小样还逃
我的方法是先把字符串从'.'分开,大于1的部分和str2int是一样的,小于1的部分采用逆序并进行除法的方式。 但问题是除法只会进行比s2的长度少一次,所以我在s2最前面添加了一个0. 不知道是不是还有更优雅的方式解决reduce次数少1次的问题。