Discuss / Python / 抄作业

抄作业

Topic source

心中熱望

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

from functools import reduce

def str2float(s):

    i = s.index('.') #找到.的位置

    s = s[:i] + s[i+1:] #从.的位置把str切分再合并,目的是丢掉.此时数据是str

    def fn(x,y):

        return x * 10 + y #将list的数字变为一整个数字

    def char2num(s):

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

        return DIGITS[s] #试图将str转变为一个list的数字,因为dict无法接受一个str,需要配合map函数使用,此函数输出的并不是一串数字,而是一个一个的单独数字

        #因此需要配合fn()函数使用,将单独的数字转化成为一串数字1,2,3,4,5,6=>123456

    return reduce(fn,map(char2num,s))/(10**(len(s)-i))#最后一步,给数字123456添加小数点,使用数学方法,123456/1000=123.456,但是这个1000要如何得出?

    #len(s)是计算s的长度,让他减去小数点所在的位置,即123456长度为6减去小数点所在的地方为3,结果等于3,10的3次方等于1000,这是最难想到的地方


  • 1

Reply