Discuss / Python / 三道题

三道题

Topic source

岁益寒

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

# -*- coding: utf-8 -*-

# 第一题

def normalize(name):

    return name[0].upper()+name[1:].lower()

# print(list(map(normalize,['maRila','petER','lLll','lYh'])))

# 第二题

# 此题的问题在于函数默认传参,一般来讲是int或float。list未能提前声明,所以使用时报错,可以里面进行切片告诉编译器这是一个iterable

from functools import reduce

def prod(ls):

    return reduce(lambda x,y : x*y , ls[:])

print(prod([1,2,3]))

# print(reduce(lambda x,y : x*y , [1,2,4,5]))

# 第三题

from functools import reduce

def char2num(c):

    if c=='.':

        return '.'

    else:

        return int(c)

def str2float(s):

    ls=list(map(char2num,s))

    if '.' in ls:

        idx = int(ls.index('.'))

        x=reduce(lambda x,y:x*10+y,ls[0:idx])

        y=reduce(lambda x,y:x*0.1+y,[0.1*x for x in ls[-1:idx:-1]])

        return x+y

    else:

        return reduce(lambda x,y:x*10+y,ls)

# print(str2float('12333.23432'))


  • 1

Reply