把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)

原题:利用 map 和 reduce 编写一个 str2float 函数,把字符串'123.456'转换成浮点数 123.456

这是我在学习python过程中写到的一个题,答案非原创

from functools import reduce
def str2float(s):
    def fn(x,y):
            return x*10+y
    n=s.index('.')
    s1=list(map(int,[x for x in s[:n]]))
    s2=list(map(int,[x for x in s[n+1:]]))
    return reduce(fn,s1)+reduce(fn,s2)/10**len(s2)
print('str2float(\'123.456\')=',str2float('123.456'))

结果:


看到这个题最开始,我想的是经过对‘ . ’的判断,去计算两边的数字,后来发现没有这个方法。

看到了这个答案,这个答案的理解:

        index( ) :是对‘ . ’位置的具体判断

        map和reduce最本质的区别在与计算的时候,map是单个计算,而reduce会牵扯到上一个计算的内容,将上一次计算的结果带入到本次计算中。


补充小知识:1,当我写完之后,想这怎么验证是否是浮点数, 又没有用map和reduce写,写了一个简单的,并验证了是否是浮

                       点数。


                    

猜你喜欢

转载自blog.csdn.net/qq_38417119/article/details/79884695