第三题:
def str2float(s): DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3,'4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def char2num(s): return DIGITS[s] def fn(x, y): return 10 * x + y n = s.index('.') s1 = list(map(char2num, s[0:n])) s2 = list(map(char2num, s[n + 1:])) return reduce(fn, s1) + reduce(fn, s2) / 10**len(s2)
这里的主要思路是要分割小数点前的列表与小数点后的列表,小数点前可以用x*10+y来让单独的数字变成整数。小数点后面的数字要让它们先变成整数,然后除以十的n次方,具体几次方根据列表长度而定,也就是len(s2),值得注意的是,这里用的是**而不是*,因为用**才是次方,这里是十的三次方,如果用*,就变成了10*3
还有一个函数,index() 函数是用于从列表中找出某个值第一个匹配项的索引位置。这里用index()找到了小数点的位置,然后切片分割列表。
Sign in to make a reply
雨鸢梦
第三题:
这里的主要思路是要分割小数点前的列表与小数点后的列表,小数点前可以用x*10+y来让单独的数字变成整数。小数点后面的数字要让它们先变成整数,然后除以十的n次方,具体几次方根据列表长度而定,也就是len(s2),值得注意的是,这里用的是**而不是*,因为用**才是次方,这里是十的三次方,如果用*,就变成了10*3
还有一个函数,index() 函数是用于从列表中找出某个值第一个匹配项的索引位置。这里用index()找到了小数点的位置,然后切片分割列表。