Discuss / Python / 第3题

第3题

Topic source

小样还逃

#1 Created at ... [Delete] [Delete and Lock User]
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次的问题。


  • 1

Reply