# 1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作 def change_file(file_path, old, new): ''' :param file_path: 修改的文件路径 :param old: 要修改的内容 :param new: 修改后的内容 :return: ''' list1 = [] with open(file_path, 'r', encoding='utf-8') as f: # 如果文件比较大的时候,用for循环一行一行读取更好 for line in f: line = line.replace(old, new) # old:tank3, new: egon list1.append(line) # 执行到此处,操作系统已经回收打开文件的资源 with open(file_path, 'w', encoding='utf-8') as f: for line in list1: f.write(line) # change_file('test.txt', 'tank1', 'egon') # 2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数 def count(str1): ''' :param str1: 外部传入的字符串,字符串由数字、字母、空格、其他字符组成 :return: ''' # 1) 初始化每种字符类型的个数 dic = { 'number': 0, # 数字个数 'letters': 0, # 字母个数 'blank': 0, # 空格个数 'other': 0, # 其他个数 } # 2) 循环遍历,检测每个字符的类型,并为其添加个数 for line in str1: # a123 # 3) 判断字符串是否是数字、字母、空格、其他 if line.isdigit(): dic['number'] += 1 elif line.isalpha(): # 判断line是否是字母 dic['letters'] += 1 # elif line == ' ': elif line.isspace(): # 判断是否是空格 dic['blank'] += 1 else: dic['other'] += 1 return dic # res = count('tank 123 egon_sb 321 !@@#¥%(())**&%……¥') # print(res) # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 def check_length(str_list_tuple): if len(str_list_tuple) > 5: print(f'{str_list_tuple}的长度大于5') else: print('太短了,不行!') # check_length('egon_sb_10') # 4、写函数,检查传入列表的长度,如果大于2, # 那么仅保留前两个长度的内容,并将新内容返回给调用者。 def check_list(list1): # len: 用于获取所有 "序列" 类型的长度 # 序列: str, list, tuple, set if len(list1) > 2: return list1[:2] # 0,1 # res = check_list(['tank', 'egon_sb', 'egon']) # print(res) # 5、写函数,检查获取传入列表或元组对象的 # 所有 "奇数位索引" 对应的元素,并将其作为新列表返回给调用者。 def get_odd_element(list_tuple): # [1, 2, 3, 4, 5, 6] # 索引: 0 1 2 3 4 5 return list_tuple[1::2] # res = get_odd_element([1, 2, 3, 4, 5, 6]) # print(res) # 6、写函数,检查字典的每一个value的长度,如果大于2, # 那么仅保留前两个长度的内容,并将新内容返回给调用者。 # dic = {"k1": "v1v1", "k2": [11,22,33,44]} # PS:字典中的value只能是字符串或列表 def check_dict(dic): for key, value in dic.items(): if len(value) > 2: dic[key] = value[:2] # 0, 1 return dic dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]} res = check_dict(dic) print(res)