1.利用map()
函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT']
,输出:['Adam', 'Lisa', 'Bart']。
def normalize(s):
return s[0].upper()+s[1:].lower()
list(map(normalize,['ada','LID','Min']))
结果
['Ada', 'Lid', 'Min']
解释:
(1)str.upper()将字符串变为大写;
(2)str.lower()将字符串变为小写;
(3)map(f,[x1,x2,x3,...]),两个输入,一个输入f为参数,一个输入为可迭代对象,功能是将函数f依次作用于序列[x1,x2,x3...],输出一个迭代器。
(4)将str分为两部分,首字母s[0],剩余部分s[1:].
拓展;
(1)str.istitle(),判断字符串首字母是否为大写,是返回True,否返回False;
(2)str.islower(),判断字符串是否全为小写,是返回True,否返回False;
(3)str.isupper(),判断字符串是否为大写,是返回True,否返回False;
(4)str.isalpha(),判断字符串是否全为字母,是返回True,否返回False;
(5)str.isdigit(),判断字符串是否全为数字,是返回True,否返回False;
(6)str.isalnum(),判断字符串是否只含字母和数字,是返回True,否返回False;
2.利用map
和reduce
编写一个str2float
函数,把字符串'123.456'
转换成浮点数123.456
:
from functools import reduce
dig={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2num(s):
return dig[s]
def str2float(s):
m,n=s.split('.')
return reduce(lambda x,y:x*10+y,map(str2num,m))+reduce(lambda x,y:x*0.1+y,map(str2num,n[::-1].ljust(len(n)+1,'0')))
str2float('123.456')
解释:
(1)reduce():把一个函数作用在一个序列上,必须接受两个参数,把结果和序列的下一个参数做累计运算。
(2)str.split():把字符串分成几部分;
(3)lambda:匿名函数,可以用一行代码表示公式计算;
(4)str.ljust():在字符串右边加;
(5)n[::-1]:将列表倒置;
(6)思路:先定义一个字典,将字符串转换为整型数;其次,将float数分成两部分处理,整数部分;对小数部分先在其右端加个’0‘,再将列表倒置,然后;最后整数部分和小数部分相加即可。
拓展:
(1)str.zfill():特殊的填充方法,参数指定长度,不够就在左边填充0,专门用于二进制;
(2)str.ljust():填充内容时,可以自己选择填充符号,向右填充;
(3)str.rjust():填充内容,可以自己选择填充符号,向左填充;
(4)str.center():能够将字符串内容置中,指定填充符号与长度。