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.reduce
、functools.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: