据说是面试题
面试题
王二学习python的笔记以及记录,如有雷同,那也没事
听说是面试题,我就把课上听到的一些题总结,如下
1. 一行代码换值,python容错高
1一行代码交换ab值 a = 1 b = 2 a, b = b, a print(a, b) 2. 自动识别 a, b = [1, 2] print(a, b) a, b = (1, 20) print(a, b) a, b = [1, 2], ['dsd', 3] print(a, b)
2.计算字符串中整数的个数
# 计算字符串中整数的个数 info = '1dsd12a1' for i in info: if i.isalpha(): info = info.replace(i, ' ') l = info.split() print(len(l))
content = 'sd2d1dsdsda1 fdsdfasf11dw' # content = content + 's' count = 0 dig_count = 0 while count < len(content): if content[count].isdigit(): while content[count].isdigit(): count += 1 if count == len(content): break dig_count += 1 else: count += 1 print(dig_count)
3. 列表元素去重
li = [1, 2, 33, 33, 2, 1, 4, 5, 6, 6] set_li = set(li) print(set_li) li = list(set_li) print(li)
4. 元祖数据类型
# 面试题 元祖中只有一个元素,且啥都不加,则该元祖的数据类型为 元素类型 # 元祖中,空列表,则数据类型为列表 ''' # tu1 = () # tu2 = (1) # tu3 = (1,) # print(tu1, type(tu1)) # print(tu2, type(tu2)) # print(tu3, type(tu3)) tu1 = ([]) tu2 = ([1]) tu3 = ([1],) print(tu1, type(tu1)) print(tu2, type(tu2)) print(tu3, type(tu3)) '''
5.程序输出结果为(考察重复赋值)
d = lambda p:p*2 t = lambda p:p*3 x = 2 x = d(x) x = t(x) x = d(x) print(x)
6.现有两元组('a','b'),('c','d'),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] (考察lambda与内置函数的配合使用)
# 普通函数 ''' def func(ret): return {ret[0]:ret[1]} ret = zip(('a', 'b'), ('c', 'd')) res = map(func,ret) print(list(res)) ''' # 匿名函数 ''' ret = zip(('a', 'b'), ('c', 'd')) res = map(lambda x: {x[0]: x[1]}, ret) print(list(res)) '''
7.程序输出结果:(考察迭代器,列表推导式,m为函数调用)
def multipliers(): return [lambda x:i*x for i in range(4)] print([m(2) for m in multipliers()]) # 请修改multipliers的定义来产生期望的结果。 def multipliers(): return (lambda x:i*x for i in range(4)) print([m(2) for m in multipliers()])
8.关于黏包问题
1.为什么会出现黏包问题
1.首先只有TCP协议中才会出现黏包
2.TCP是面向流的协议
3.在数据传输的过程中使用缓存机制来避免数据丢失
4.因此在连续发送小数据时,或接受大小不符的时候会出现黏包问题
5.本质是因为,接收数据的时候不知道发送数据的长短
2.解决黏包问题
1.在传输大量数据之前,先告诉接收端要发送的数据大小
2.通过struct模块来定制协议