Discuss / Python / 第三題

第三題

Topic source

與生懼來

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

# 最开始的逻辑

# def str2float(s):

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

#     a = len(s) - s.index('.') - 1

#     s1 = [x for x in s if x!='.']

#     def char2num(s):

#         return DIGITS[s]

#     def str2int(s):

#         return reduce(lambda a, b: a * 10 + b, map(char2num, s1))

#     return str2int(s)/10**a

# print('str2float(\'123.456\') =', str2float('123.456'))

# 用lambda简化

def str2float(s):

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

    return reduce(lambda a, b: a * 10 + b, map(lambda c: DIGITS[c], [d for d in s if d !='.']))/10**(len(s) - s.index('.') - 1)


  • 1

Reply