Discuss / Python / 想到了一个比较笨的方法

想到了一个比较笨的方法

Topic source

dudefitslol

#1 Created at ... [Delete] [Delete and Lock User]

# -*- coding:utf-8 -*-

from functools import reduce

def str2float(s):

    dotidx = s.find('.') #查找输入字符串中'.'的索引值

    snodt = s.replace('.','') #将'.'替换为空字符串

    D = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

    def c2n(c):

        return D[c]

    def f(x,y):

        return 10 * x + y 

    sum1 = reduce(f,map(c2n,snodt))

    #以上步骤等同于str变换为int

    sum2 = sum1 / (10**(len(snodt)-dotidx)) 

    #将获取的整数除以相应的的幂次,幂次由输入的字符串中小数点索引值获取

    return sum2

#感觉进入高级特性后自学起来就力不从心了,不知道和大学专业不学高数有没有关系,还是纯粹因为自己脑子已经跟不上了……


  • 1

Reply