• 3-18作业


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

     1 def replace_file(src, **kwargs):
     2     import os
     3     if not os.path.exists(r'{}'.format(src)):
     4         print("当前路径下无文件")
     5         return
     6     with open(r'{}'.format(src), 'rb') as r,
     7         open(r'{}.swap'.format(src), 'wb') as w:
     8         for line in r:
     9             line = line.decode('utf-8')
    10             if kwargs['old_content'] in line:
    11                 w.write(line.replace(kwargs['old_content'], kwargs['new_content']).encode('utf-8'))
    12             else:
    13                 w.write(line.encode('utf-8'))
    14     os.remove('{}'.format(src))
    15     os.rename('{}.swap'.format(src), '{}'.format(src))
    16 
    17 inp_src = input('输入文件名:').strip()
    18 old_content = input("要修改的内容:").strip()
    19 new_content = input("修改后的内容:").strip()
    20 replace_file(inp_src, old_content=old_content, new_content=new_content)
    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、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

     1 def count(*args):
     2     dic = {
     3         'num': 0,
     4         'alpha': 0,
     5         'space': 0,
     6         'others': 0
     7     }
     8     for i in args:
     9         if i.isdigit():
    10             dic['num'] += 1
    11         elif i.isalpha():
    12             dic['alpha'] += 1
    13         elif i.isspace():
    14             dic['space'] += 1
    15         else:
    16             dic['others'] += 1
    17     return dic
    18 
    19 
    20 ipt = input('input something:')
    21 res = count(*ipt)
    22 print(res)
    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。

    1 def object_len(obj):
    2     if len(obj) < 5:
    3         print('长度小于5')
    4     elif len(obj) > 5:
    5        print('长度大于5')
    6     else:
    7                 print('长度等于5')
    8 
    9 object_len(('今天3-18','岁月是一场有去无的旅行',{'name':'tank','age':'18'},['egon','alex']))
    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')
    View Code

    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)
    View Code

    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)
    View Code

    6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表

    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    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)
  • 相关阅读:
    求出123456 8910,数字,显示出来
    Django之Model操作
    AJAX全套
    Python之路【第十六篇】:Django【基础篇】
    Q2Day81
    Django第二重点(thml与django连接)
    react
    es6 和 python 语法比较
    微信
    py库: GUI(tkinter)
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/12518120.html
Copyright © 2020-2023  润新知