index = 0 leng = len(s) for i,v in enumerate(s): #enumerate 前面有讲解,可以在迭代的时候获取到下标 if v == '.': index = i s = s[:index] + s[index+1:] #拆除小数点,然后前后拼接 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 x * 10 + y return 0.1**(leng-1-index) * reduce(fn,map(char2num,s)) #0.1**(len-1-index) 表示小数点的位数,将整体值缩小到小数点位数倍数
整体思路:先取得小数点在整个字符串中的位置,然后根据小数点的位置对字符串进行拆分后,将前后两部分拼接。然后通过str2int 的方式转换成整数后在缩小到小数点位数倍数。
Sign in to make a reply
用户5316519431
整体思路:先取得小数点在整个字符串中的位置,然后根据小数点的位置对字符串进行拆分后,将前后两部分拼接。然后通过str2int 的方式转换成整数后在缩小到小数点位数倍数。