练习1 from functools import reduce def normalize(name): name=name.capitalize()#首字母大写 return name L1=['adam','LISA','barT'] L2=list(map(normalize,L1)) print(L2) 练习2 def prod(L):#prod函数接受一个list,并用reduce()求积 return reduce(lambda x,y:x*y,L) print('3*5*7*9=',prod([3,5,7,9])) 练习3 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] def str2int(s): return reduce(fn,map(char2num,s)) def str2float(s): s1,s2=s.split('.') x=s1+s2 return reduce(fn,map(char2num,x))/(10**len(s2)) print(str2float('123.456'))
自己写了一个,但是看了你的代码,感觉你的行数虽然多一点,但看起来简介多了,学习了
在最后一个str2float中,之前已经定义过str2int了,就可以直接调用了,所以str2float中最后的return可以直接用: return str2int(x)/ (10 ** len(s2)) 这段代码写得很简洁而且逻辑也很好
Sign in to make a reply
少年丶喝酒不