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}

猜你喜欢

转载自www.cnblogs.com/onsunsl/p/PythonInterviewQuestions1-5.html
今日推荐