Discuss / Python / 练习三

练习三

Topic source
在此插入代码

from functools import reduce def str2float(s): L=s.split('.')
def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s] def fun1(x,y): return x*10+y def fun2(x,y): return x/10+y if s.find('.')==-1: return reduce(fun1,map(char2num,L[0])) elif s.find('.')==0: return reduce(fun2,map(char2num,L[1][::-1]))/10 else: return reduce(fun1,map(char2num,L[0]))+reduce(fun2,map(char2num,L[1][::-1]))/10

还有-123,456的情况没有考虑

elif s.find('.')==0: 不太明白这一段考虑的是什么情况 运行了这段代码有些异常:

str2float('0.44') 0.44000000000000006

小数位为重复数字的时候输出有误

elif s.find('.')==0: 是指输入的如果是'.23'这样的数字

str2float('0.44') 0.44000000000000006 这样的显示是浮点数在计算机中的存储本身就是不准确造成的

多谢解惑 百度了下还真有这么回事


  • 1

Reply