zhengdexiu

导航

第二阶段考试题

第二阶段考试题

  1. 一个大小为100G的文件 etl_log.txt,要读取文件中的内容,写出具体过程代码。

    # 如果文件有很多行
    with open('etl_log_txt',mode = "r",encoding = "utf-8") as f:
        for line in f:
            print(line)
    
    # 如果文件有很多行
    import os
    file_size = os.path.getsize("etl_log_txt.txt")
    
    read_size = 0
    with open("etl_log_txt.txt",mode="rb") as file_object:
        while read_size < file_size
      		data = file_object.read(1)
            read_size += len(data)
    
  2. 编写一个函数,这个函数接受一个文件夹名称作为参数,寻找文件夹中所有文件的路径并输入(包含嵌套)。

    def get_file_path(folder_path):
        for base_path,folder_list,file_list in os.walk(folder_path):
            for file in file_list:
                file_path = os.path.join(base_path,file)
                print(file_path)
    
    get_file_path(r"D:\Desktop\Python\code\two\day16")
    
  3. 以下的代码数据的结果是什么?

    def extend_list(val,data=[]):
        data.append(val)
        return data
    
    list1 = extend_list(10)
    list2 = extend_list(123,[])
    list3 = extend_list("a")
    
    print(list1,list2,list3)
    #[10,"a"] [123] [10,"a"]
    
  4. python代码获取命令行参数。

    import sys
    sys.argv
    
  5. 简述深浅拷贝?

    - 浅拷贝 
      - 不可变类型:不拷贝
      - 可变类型:只拷贝第一层
    - 深拷贝 
      - 不可变类型:不拷贝
      - 可变类型:所有层级的可变类型都拷贝
      - 特殊的,元组中如果包含可变类型也会被拷贝
    
  6. 基于推导式一行代码生成1-100以内的偶数列表。

    even_list = [i for i in rang9(1,101) if i % 2 == 0]
    print(v)
    
  7. 请把以下函数转化为python lambda匿名函数

    def add(x,y):  
        return x+y
    
    add = lambda x,y:x+y
    
  8. 看代码写结果

    def num():
        return [lambda x: i * x for i in range(4)]
    
    result = [m(2) for m in num()]
    print(result)
    
    [6,6,6,6]
    
  9. 列表推导式和生成器表达式 [i % 2 for i in range(10)] 和 (i % 2 for i in range(10)) 输出结果分别是什么?

    [i % 2 for i in range(10)]  # 得到一个列表,内部元素是 [0,1,0,1,0,1,0,1,0,1]
    
    (i % 2 for i in range(10)) # 得到一个生成器对象
    
  10. 写装饰器

    # 写timer装饰器实现:计算fun函数执行时间,并将结果给 result,最终打印(不必使用datetime,使用time.time即可)。
    import time
    import functools
    def timer(orgin):
        # 
        @functools.wraps(orgin)
        def inner(*args,**kwargs):
            start_time = time.time()
            res = orgin(*args,**kwargs)
            end_time = time.time()
            total_time = end_time - start_time
            print(total_time)
            return total_time
        return inner
    
    @timer
    def func():
        time.sleep(2)
    
    result = func()
    print(result)
    
  11. re的match和search区别?

    match 从开头匹配
    search 在整个字符串中进行匹配
    
    他们均获取一个匹配成功的值。
    
  12. 什么是正则的贪婪匹配?或 正则匹配中的贪婪模式与非贪婪模式的区别?

    贪婪匹配:
    非贪婪匹配,尽量少的匹配字符(只要符合匹配条件就结束),特点是:?
    
  13. sys.path.append("/root/mods")的作用?

    将路径加入到sys.path,那么项目中就可以直接导入/root/mods目录下的模块和包
    
  14. 写函数

    有一个数据结构如下所示,请编写一个函数从该结构数据中返画由指定的 字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。
    DATA = {
        "time": "2016-08-05T13:13:05",
        "some_id": "ID1234",
        "grp1": {"fld1": 1, "fld2": 2, },
        "xxx2": {"fld3": 0, "fld4": 0.4, },
        "fld6": 11,
        "fld7": 7,
        "fld46": 8
    }
    
    fields:由"|"连接的以fld开头的字符串, 如fld2|fld7|fld29  
    
    def select(fields):
        print(DATA)
        return result
    
    # 有一个数据结构如下所示,请编写一个函数从该结构数据中返画由指定的 字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。
    DATA = {
        "time": "2016-08-05T13:13:05",
        "some_id": "ID1234",
        "grp1": {"fld1": 1, "fld2": 2, },
        "xxx2": {"fld3": 0, "fld4": 0.4, },
        "fld6": 11,
        "fld7": 7,
        "fld46": 8
    }
    
    fields:由"|"连接的以fld开头的字符串, 如fld2|fld7|fld29  
    
    def select(fields):
        print(DATA)
        return result
    
  15. 编写函数,实现base62encode加密(62进制),例如:

    内部维护的数据有:0123456789AB..Zab..z(10个数字+26个大写字母+26个小写字母)。
    当执行函数:
    	base62encode(1),获取的返回值为1
    	base62encode(61),获取的返回值为z
    	base62encode(62),获取的返回值为10
    
  16. 基于列表推导式一行实现输出9*9乘法表。

    for i in range(1,10):
        for j in range(1,i+1):
            print("{}*{} ".format(i,j),end="")
        print()
    
    
    

posted on 2023-07-07 15:35  拒灬绝  阅读(4)  评论(0)    收藏  举报