Discuss / Python / 练习:map轮取单数+reduce逐个累算

练习:map轮取单数+reduce逐个累算

Topic source

第一题:

def normalize(name):

    #格式化字符串

    return f'{name[0].upper()}{name[1:].lower()}'

L1 = ['adam','LISA','barT']

L2 = list(map(normalize,L1))

测试

print(L2)

第二题:

from functools import reduce

def prod(L):

    def fn(x,y):

        return x * y

    return reduce(fn,L)

测试

print('2 * 3 * 5 =',prod([2,3,5]))

if prod([2,3,5]) == 30:

    print('测试成功!')

else:

    print('测试失败!')

第三题:

from functools import reduce

def str2float(str):

    #小数点前后分割

    integer,decimal = str.split('.')

    #字符转数字

    def char2num(char):

        dict = {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

        return dict[char]

    #提取整数组合

    def fn(x,y):

        return x * 10 + y

    L1 = reduce(fn,map(char2num,integer))

    R1 = reduce(fn,map(char2num,decimal))/10**len(decimal)

    return L1+R1

#测试

print('str2float(\'123.456\') =', str2float('123.456'))

if abs(str2float('123.456') - 123.456) < 0.00001:

    print('测试成功!')

else:

    print('测试失败!')


  • 1

Reply