Discuss / Python / 暂时这样了,代码还可以继续优化

暂时这样了,代码还可以继续优化

Topic source

biggerdream

#1 Created at ... [Delete] [Delete and Lock User]

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 fn(x, y):
    return x * 10 + y
#字符转换函数
def char2num(s):
    return DIGITS[s]

#提取字符串中所有的数字和小数点组成的列表
li = list(map(char2num, s))

#获取列表中小数点的索引
dotIndex = li.index('.')

#获取小数点前面的纯数字列表,表示原浮点数的整数部分
list1 = li[:dotIndex]
#获取小数点后面的纯数字列表,表示原浮点数的小数部分
list2 = li[dotIndex + 1:]
#拼接上面两个列表为一个纯数字的列表,表示将原浮点数变为去掉了小数点的纯整数
list3 = list1 + list2
#将该纯数字列表转为整数
result = reduce(fn, list3)
#通过迭代小数点后面的数字,计算原浮点数的值
for i in list2:
    result = result/10
#返回结果
return result

  • 1

Reply