python练习(1)

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.利用mapreduce编写一个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数分成两部分处理,整数部分\large x*10+y;对小数部分先在其右端加个’0‘,再将列表倒置,然后\large x*0.1+y;最后整数部分和小数部分相加即可。

拓展:

(1)str.zfill():特殊的填充方法,参数指定长度,不够就在左边填充0,专门用于二进制;

(2)str.ljust():填充内容时,可以自己选择填充符号,向右填充;

(3)str.rjust():填充内容,可以自己选择填充符号,向左填充;

(4)str.center():能够将字符串内容置中,指定填充符号与长度。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值