Discuss / Python / 第一题作业,有点蒙

第一题作业,有点蒙

Topic source

其实python里面有个函数captitalize可以实现这个功能,我先偷个懒:

L1=['adam','LISA','barT']
L2=[]
for x in L1:
    y=x.capitalize()
    L2.append(y)
print(L2)

然而,当我改成map后:

def normalize(name):
    L2=[]
    for x in name:
        y=x.capitalize()
        L2.append(y)
    return L2
L1=['adam', 'LISA', 'barT']
L2=list(map(normalize, L1))
print(L2)

输出竟然变成了这样:

[['A', 'D', 'A', 'M'], ['L', 'I', 'S', 'A'], ['B', 'A', 'R', 'T']]

求解……

第二题,不会用lambda啊

from functools import reduce
def prod(x,y):
    return x*y
L=[3,5,7,9]
r=reduce(prod,L)
print(r)

格式也不像教程里给的那样是prod(L),我还没想明白……

大家都好厉害啊……只能抄抄改改了

from functools import reduce
def str2float(s):
    n=0
    try:
        n=len(s)-s.index('.')-1
        s=s[:s.index('.')]+s[s.index('.')+1:]
    except:
        pass
    def fn(x,y):
        return x*10+y
    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]
    w=reduce(fn,map(char2num,s))/pow(10,n)
    return w
print(str2float(input('Please enter a number:')))

  • 1

Reply