day14

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

import os
'''
egon is 大帅比
egon is 流弊
'''

def update_file(src_file, select_content, dsc_content):
    '''
    修改文件功能
    参数: 文件地址 ,原内容 ,新内容
    '''
    with open(r'{}'.format(src_file), mode='r', encoding='utf-8')as f:
        res = f.read()
        res1 = res.replace(f'{select_content}', f'{dsc_content}')
    with open(r'{}'.format(src_file), mode='w', encoding='utf-8')as f1:
        f1.write(res1)
        return '修改成功'


tag = True
while tag:
    src_file = input('请输入源文件地址:').strip()
    if os.path.exists(src_file):
        with open(r'{}'.format(src_file), mode='r', encoding='utf-8')as f:
            res = f.read()
            print('{}'.format(res))
        while True:
            select_content = input('请输入想要修改的内容:').strip()
            if select_content in res:
                dsc_content = input('请输入内容修改为:').strip()
                msg = update_file(src_file, select_content, dsc_content)
                print(msg)
                tag = False
                break
            else:
                print('内容不存在,请重新输入!')
                continue
    else:
        print('源文件不存在,请重新输入地址!')

结果展示:

请输入源文件地址:/Users/tophan/2020_python/day13/a.txt
egon is 大帅比
egon is 流弊

请输入想要修改的内容:tank
内容不存在,请重新输入!
请输入想要修改的内容:egon
请输入内容修改为:tank
修改成功

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

def count(res):
    '''统计字符功能'''
    list1 = [] #数字组
    list2 = [] #字母组
    list3 = [] #空格组
    list4 = [] #其他组
    for i in res:
        if i.isnumeric():
            list1.append(i)
        elif i.isalpha():
            list2.append(i)
        elif i.isspace():
            list3.append(i)
        else:
            list4.append(i)
    print(f'数字个数:{len(list1)},字母格式:{len(list2)},空格个数:{len(list3)},其他个数{len(list4)}')

count('hello world 123 #@$') #数字个数:3,字母格式:10,空格个数:3,其他个数3

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

def len_judge(*args):
    # print(args)
    if len(args) > 5:
        return True, f'长度为{len(args)}'
    else:
        return False, f'长度为{len(args)}'


a = 'hello'
b = ['a', 2, 'hh', '你好']
c = (1, 3, 'a', '你好', '11', 22)
flag, msg = len_judge(*a)
print(flag, msg) #False 长度为5
flag, msg = len_judge(*b)
print(flag, msg) #False 长度为4
flag, msg = len_judge(*c)
print(flag, msg) #True 长度为6

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

def len_list(res):
    if len(res) > 2:
        res = res[0:2]
        return res

res = len_list(['11', 22, '你好'])
print(res) #['11', 22]

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

def check_num(obj):
    list1 = []
    for i in obj:
        if not obj.index(i) % 2:
            list1.append(i)
    return list1
res = check_num([1,2,3,4,5,6,7])
print(res) #[1, 3, 5, 7]

res = check_num((1,2,3,4,5,6,7))
print(res) #[1, 3, 5, 7]

6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表

def check_len(obj):
    # print(obj.values(),type(obj.values()))
    for i in obj:
        if len(obj[i]) > 2:
           obj[i] = obj[i][0:2]
    return obj
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
res = check_len(dic)
print(res) #{'k1': 'v1', 'k2': [11, 22]}

选做作业:见https://www.cnblogs.com/xy-han/p/12513083.html

posted @ 2020-03-18 15:22  蛋蛋的丶夜  阅读(109)  评论(0编辑  收藏  举报