#1、将字符串拆为两部分,例如'123.456'拆成'123' 和 '456'
#2、将字符串变为对应的list,例如'123'-->[1, 2, 3], '456'-->[4, 5, 6]
#3、获得整数部分:[1, 2, 3]-->123
#4、获得小数部分:[4, 5, 6]-->456-->0.456
#5、return 整数+小数
from functools import reduce
def str2float(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
#此函数用作map的第一个参数.将字符串-->相应的list,例如'123'-->[1, 2, 3]
def str2num(s):
return digits[s]
#此函数用作reduce的第一个参数,将list-->相应的整数,例如[1, 2, 3]-->123 [4, 5, 6]-->456
def funcz(x, y):
return x * 10 + y
#第一步:将字符串拆为两部分,例如'123.456'拆成'123' 和 '456'
i=0
while s[i] != '.':
i = i + 1
sz = s[:i] #整数部分
sx = s[i+1:] #小数部分
#第二、三步:将字符串整数部分-->相应的list-->整数,如[1, 2, 3]-->123
zs = reduce(funcz,map(str2num, sz))
#第四步:将字符串小数部分-->相应的list-->整数,如[4, 5, 6]-->456
xs = reduce(funcz,map(str2num, sx))
#不断除以10,直到小于1,变为相应的小数,如456-->0.456
while xs >= 1:
xs = xs / 10
#第五步:得到的整数部分+小数部分
return xs + zs
Sign in to make a reply
不长到140斤不改名字
#1、将字符串拆为两部分,例如'123.456'拆成'123' 和 '456'
#2、将字符串变为对应的list,例如'123'-->[1, 2, 3], '456'-->[4, 5, 6]
#3、获得整数部分:[1, 2, 3]-->123
#4、获得小数部分:[4, 5, 6]-->456-->0.456
#5、return 整数+小数
from functools import reduce
def str2float(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
#此函数用作map的第一个参数.将字符串-->相应的list,例如'123'-->[1, 2, 3]
def str2num(s):
return digits[s]
#此函数用作reduce的第一个参数,将list-->相应的整数,例如[1, 2, 3]-->123 [4, 5, 6]-->456
def funcz(x, y):
return x * 10 + y
#第一步:将字符串拆为两部分,例如'123.456'拆成'123' 和 '456'
i=0
while s[i] != '.':
i = i + 1
sz = s[:i] #整数部分
sx = s[i+1:] #小数部分
#第二、三步:将字符串整数部分-->相应的list-->整数,如[1, 2, 3]-->123
zs = reduce(funcz,map(str2num, sz))
#第四步:将字符串小数部分-->相应的list-->整数,如[4, 5, 6]-->456
xs = reduce(funcz,map(str2num, sx))
#不断除以10,直到小于1,变为相应的小数,如456-->0.456
while xs >= 1:
xs = xs / 10
#第五步:得到的整数部分+小数部分
return xs + zs