15

# 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)
原文地址:https://www.cnblogs.com/2722127842qq-123/p/13449171.html