作业09

1.写函数,用户传入修改的文件名与要修改的内容,执行函数,完成批量修改操作。

def change_file(filename,oldfile,newfile):    三个参数为文件名,需要替换的内容,要替换的新内容
    with open(filename,'rt',encoding='utf-8') as read_f,\      filename接收下面的user_info.txt
    open('user_info1.txt',mode='wt',encoding='utf-8') as write_f: for line in read_f: if oldfile in line:              查找需要替换掉的内容 line = line.replace(oldfile,newfile)  替换中。。。 write_f.write(line)              开始写入新文件 change_file('user_info.txt','alex','DSB') 三个参数与上面对应

2.写函数,计算传入字符串中的数字、字母、空格、及其他出现的次数

def count(msg):   msg要接收一段话
    res = {
        'num':0,
        'alpha':0,
        'space':0,         定义空字典来暂时计次
        'other':0
    }
    for line in msg:
        if line.isdigit():
            res['num']+=1      for 循环判断
        elif line.isalpha():
            res['alpha']+=1
        elif line.isspace():
            res['space']+=1
        else:
            res['other']+=1
    return res                 此处计次结果要有返回值
res = count('=====----- 12345,go mountain fight tiger -----=====')   输入msg
print(res)

3.写代码,判断用户传入的对象(字符串、列表、元组)的长度是否大于5

def count(msg):
if len(msg) > 5:
return False
else:
return True
res = count( )
print(res)

4.写函数,检查传入列表的长度,如果长度大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

def inp(msg):
    if len(msg) > 2:
        msg = msg[0:2]  读取默认步长为1,顾头不顾尾所以只读索引0,1
    return msg
print(inp(['tongtong','baobeitong','klf','kk']))

['tongtong', 'baobeitong']

5.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

def func2(seq):
    return seq[::2]  读取seq以索引0开始步长为2依次取值,再return
print(func2([1,2,3,4,5,6,7]))

6.写函数,检查字典每一个value的长度,如果大于2,只保留前两位长度的内容,并将新内容返回给调用者。

dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def checkd(dic):
    d = {}                 要返回新内容,先定义空字典
    for k,v in dic.items():for循环取出key,value的值
        if len(v) > 2:     判断value的长度
            d[k] = v[0:2]  取出value的前两位
    return d
print(checkd({"k1": "v1v1", "k2": [11,22,33,44]}))

 

posted @ 2018-09-25 16:52  BlackLinks  阅读(78)  评论(0)    收藏  举报