Discuss / Python / 第三题

第三题

Topic source

记录函数里面的return和print的区别:return返回的值是有类型的(如int,float,str等等),而print打印出来的值是Nonetype。

开始用了print作返回,结果测试的时候Nonetype无法被绝对值函数计算,被坑死...

from functools import reduce
def char2num(i):
    digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '.':'.'}
    return digits[i]
def f1(x,y):
    return 10*x+y
def str2float(k):
    if k == '':
        print('请输入值')    
    else:
        s=list(map(char2num,k))
        s1=[s[i] for i in range(0,k.find('.'))]
        s2=[s[i] for i in range(k.find('.')+1,len(s))]
        return reduce(f1,s1)+reduce(f1,s2)/10**(len(s2))
#测试:
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')

  • 1

Reply