• Python面试题库学习1-5


    1.对1-100求和?

    方法1 递归

    def get_sum(n):
        """递归解法关键点:做什么/什么时候结束"""
        return n + get_sum(n-1) if n else 0
    print(get_sum(100))
    

    方法2 库函数

    
    print(sum(range(101)))
    

    方法3 循环

    sum = 0
    for i in range(101):
        sum += i
    print(sum)
    

    2. 求n的阶乘

    方法1 库函数

    print(math.factorial(3))
    

    方法2 递归

    def my_factorial(n):
        return n * my_factorial(n-1) if n else 1
    
    print(my_factorial(3))
    

    3.如何在一个函数内部修改全局变量

    a = dict(a=1)
    b = 2
    
    def test_global():
        global b
        b += 3
        a.update(aa=2)
    
    test_global()
    print("a:", a)
    print("b:", b)
    

    输出

    a: {'a': 1, 'aa': 2}
    b: 5

    4. 尽可能多的列出Python内置模块

    • os 操作系统相关的模块,常用os.path目录操作、os.environ系统变量、os.mkdir创建目录、os.getcwd获取当前目录、os.remove删除文件等等;
    • datetime 日期和时间相关的操作;
    • time 时间戳相关的操作,time.time当前时间戳, time.sleep线程休眠;
    • sys Python环境相关的模块,sys.path模块导入搜索路径,sys.getsizeof对象占用内存数量,sys.maxsize最大数值;
    • functools 函数式编程的部分常用的函数工具, functools.portial偏函数,functools.reducefunctools.wraps
    • struct 用于十六进制打包转换,如果int和十六进制互转;
    • shutil 更高级的目录和文件操作
    • peckle Python对象系列化和存储到文件
    • sqlite3 SQLite数据库接口
    • logging 日志操作
    • ctype Python与C交互接口
    • threadding 线程操作
    • multiprocessing 进程操作
    • queue 队列
    • josn json编解码
    • random 随机数
    • urllib HTTP网络请求
    • base64 baseb编码
    • socket 底层网络接口

    5.字典如何删除键和合并两个字典

    删除key

    d = dict(a=1, b=2)
    print("before del:{}".format(d))
    d.pop('a')
    del d['b']
    print("after del:{}".format(d))
    

    before del:{'a': 1, 'b': 2}
    after del:{}

    以上方法如果删除一个不存在的key可能会引发KeyError异常,推荐做法是使用d.pop(key_name, default_value), pop其实是从字典里取这个key的值并删除,如果不存在的话返回default_value

    print({}.pop("my_key", "not exist!"))
    

    not exist!

    合并或更新

    d1 = dict(c=3, d=4)
    d2 = dict(e=5, f=6)
    print("d1={}, d2={}".format(d1, d2))
    d2.update(d1)
    print("d1 merge d2:{}".format(d2))
    

    d1={'c': 3, 'd': 4}, d2={'e': 5, 'f': 6}
    d1 merge d2:{'e': 5, 'f': 6, 'c': 3, 'd': 4}

  • 相关阅读:
    align 的用法
    layui 验证用法
    C# Post请求方法
    SQL 查询今天、昨天、7天内、30天的数据
    对Dijkstra名字发音的看法
    Ubuntu桌面图标消失且右键失效的解决办法
    Ubuntu下安装与配置Matlab
    ns 简单网络模拟
    JAVA包含第三方包的部署方法
    Ubuntu下配置ftp服务端
  • 原文地址:https://www.cnblogs.com/onsunsl/p/PythonInterviewQuestions1-5.html
Copyright © 2020-2023  润新知