Discuss / Python / 第三题

第三题

Topic source

Limit_阿廖

#1 Created at ... [Delete] [Delete and Lock User]
from functools import reduce

def str2float(s):
    inte = s.split('.')[0]
    frac = s.split('.')[1]
    def char2num(c):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[c]
    def sf(x,y):
        return x * 10 + y
    return reduce(sf,map(char2num,inte))+\
           reduce(sf,map(char2num,frac)) / 10**len(frac)

print('str2float(\'123.456\') =', str2float('123.456'))

  • 1

Reply