Discuss / Python / 第三题终于自己想出了代码虽然有点复杂

第三题终于自己想出了代码虽然有点复杂

Topic source

就是遇到整数部分为0时会有点小bug,不知道怎么回事。

from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2float(s):
    def char2num(s):
        return DIGITS[s]
    def fn(x,y):
        return x*10+y
    i=0
    s1=s
    s2='0'
    while i<len(s):
        if s[i]=='.':
            s1=s[:i]
            s2=s[i+1:]
        i=i+1
    p=0
    x=1
    while p<len(s2):
        x=x*0.1
        p=p+1
    return reduce(fn,map(char2num,s1))+reduce(fn,map(char2num,s2))*x

  • 1

Reply