龙鸣写法与贵族写法的思路就不分析了,直接贴代码。
龙鸣写法: from functools import reduce
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 str1num(x,y): return x*10+y
def str2float(s): i = 0 while s[i] != ".": i+=1 s=s[:i]+s[i+1:] return reduce(str1num,map(char2num,s))/pow(10,len(s)-i) 贵族写法:
def str2float(s): from functools import reduce 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] return reduce(lambda x,y:x10+y,map(char2num,s.split('.')[0])) +reduce(lambda x,y:x/10+y,map(char2num,s.split('.')[1][::-1]))/10
Sign in to make a reply
CGnightmare托马斯
龙鸣写法与贵族写法的思路就不分析了,直接贴代码。
龙鸣写法: from functools import reduce
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 str1num(x,y): return x*10+y
def str2float(s): i = 0 while s[i] != ".": i+=1 s=s[:i]+s[i+1:] return reduce(str1num,map(char2num,s))/pow(10,len(s)-i) 贵族写法:
def str2float(s): from functools import reduce 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] return reduce(lambda x,y:x10+y,map(char2num,s.split('.')[0])) +reduce(lambda x,y:x/10+y,map(char2num,s.split('.')[1][::-1]))/10