# 最开始的逻辑
# 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)
Sign in to make a reply
與生懼來
# 最开始的逻辑
# 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)