Discuss / Python / 习题三

习题三

Topic source

里昂tcxy

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

#先把字符串分成整数与小数两部分,然后在组合成一个新的整数,最后除以10的n次方,得到浮点数

from functools import reduce

def str2float(s):

    i = s.find('.')#找出小数点在字符串中的下标位置

    s1 = s[:i]#整数部分

    s2 = s[i+1:]#小数部分。小数点占一个字符,所以从i+1开始计算

    l = len(s)-len(s1)-1#计算有几位小数

    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]

    def mluad(x,y):

        s = x*10+y

        return s

    a = reduce(mluad,list(map(char2num,s1)))

    b = reduce(mluad,list(map(char2num,s2)))

    return a+b/(10**l)

s = str(input())

print(str2float(s))


  • 1

Reply