Discuss / Python / 第三题

第三题

Topic source
def str2float(s):

    #利用小数点“.”将字符串分割为三部分
    l = s.partition('.')


    #数字字符转化为数字
    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]


    #整数部分
    def funInt(x, y): 
        return x * 10 + y
    #小数部分
    def funFloat(x, y): 
        return x/10 + y
                                                                               # [::-1] 目的是逆序
#除以10的目的是使得小说部分变为“0.xxxx”这种形式
    return reduce(funInt, map(char2num, l[0])) +  reduce(funFloat, map(char2num, l[2][::-1]))/10
print(str2float('123.456'))

  • 1

Reply