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只能是字符串或列表
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]})