day14作业

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

实现效果:

[root@Kingstar day14]# python practice_1.py 
请输入要改的内容:憨批
请输入更改后的内容:逗比  
请输入你要修改的文件路径:/home/day14/1.txt
是否继续添加文件路径(y,n):y
请输入你要修改的文件路径:/home/day14/2.txt
是否继续添加文件路径(y,n):y
请输入你要修改的文件路径:/home/day14/3.txt
是否继续添加文件路径(y,n):n
[root@Kingstar day14]# cat 1.txt
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
上啊,姜春,你这个逗比,还不快上啊!
[root@Kingstar day14]# cat 2.txt 
上啊,姜春,你这个逗比,还不快上啊!

部分实现代码:

def filechange(*args,**kwargs):
    for item in args:
        with open(item,mode='rb') as f1,
            open(item+'.bak',mode='wb') as f2:
            while True:
                res = f1.readline().decode('utf-8')
                if not res:break
                if kwargs['str_src'] in res:
                    res = res.replace(kwargs['str_src'],kwargs['str_new'])
                f2.write(res.encode('utf-8'))
        os.remove(item)
        os.rename(item+'.bak',item)

filechange(*file_list,**change)

2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

实现效果:
[root@Kingstar day14]# python practice_2.py 
请输入待检测的字符串:  wcdgfsdf 123  456
+----------+----------+
| 字符类型 | 统计个数 |
+----------+----------+
|  number  |    6     |
|  letter  |    8     |
|  space   |    3     |
|  other   |    0     |
+----------+----------+
[root@Kingstar day14]# 

部分代码:

def count(*args):
    count_dict = {'number':0,'letter':0,'space':0,'other':0}
    for item in args:
        if item.isdigit():
            count_dict['number'] += 1
        elif item.isalpha():
            count_dict['letter'] += 1
        elif item.isspace():
            count_dict['space'] += 1
        else:
            count_dict['other'] += 1
    return count_dict
check_str = input('请输入待检测的字符串:').strip()
count_d = count(*check_str)
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
实现效果:
[root@Kingstar day14]# python practice_3.py 
长度<5:{'name': 'egon', 'age': 18}
长度=5:(3, 4, 5, 6, 7)
长度>5:[1, 2, 3, 4, 5, 6]
[root@Kingstar day14]# 

部分代码:

def checklen(*args):
    more_len = []
    eql_len = []
    less_len = []
    for item in args:
        if len(item) > 5:
            more_len.append(item)
        elif len(item) == 5:
            eql_len.append(item)
        elif len(item) < 5:
            less_len.append(item)

    return less_len,eql_len,more_len

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

实现效果:

[root@Kingstar day14]# python practice_4.py 
[[1, 2], [5, 6], [1], [7, 8]]
[root@Kingstar day14]# 

部分代码:

def list_handle(*args):
    re = []
    for item in args:
        if len(item) > 2:
            re.append(item[:2:])
        else:re.append(item)
    return re
re = list_handle([1,2,3,4],[5,6],[1,],[7,8,9])
5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
实现效果:
[root@Kingstar day14]# python practice_5.py 
[[2, 4], ['tank']]
[root@Kingstar day14]# 

部分代码:

def handle(*args):
    re = []
    for item in args:
        item_new = [item[i] for i in range(len(item)) if i%2 == 1]
        re.append(item_new)
    return re
 re = handle([1,2,3,4,5],['egon','tank','alex'])
6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
实现效果:
[root@Kingstar day14]# python practice_6.py 
{'K1': 'v1', 'k2': [11, 22]}
[root@Kingstar day14]# 

部分代码:

def check_dict(**kwargs):
    for k,v in kwargs.items():
        if len(v) > 2:
            kwargs[k] = kwargs[k][:2:]
    return kwargs
 re_dict = check_dict(**{'K1':'v1v1','k2':[11,22,33,44]})
原文地址:https://www.cnblogs.com/surpass123/p/12518870.html