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线程休眠;sysPython环境相关的模块,sys.path模块导入搜索路径,sys.getsizeof对象占用内存数量,sys.maxsize最大数值;functools函数式编程的部分常用的函数工具,functools.portial偏函数,functools.reduce、functools.wraps‘struct用于十六进制打包转换,如果int和十六进制互转;shutil更高级的目录和文件操作pecklePython对象系列化和存储到文件sqlite3SQLite数据库接口logging日志操作ctypePython与C交互接口threadding线程操作multiprocessing进程操作queue队列josnjson编解码random随机数urllibHTTP网络请求base64baseb编码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:

浙公网安备 33010602011771号