102、
# 编程实现一个先进先出的队列类,能指定初始化时队列大小,以及cnqueue,dequeue,
# is_empty,is_full四种方法
‘‘‘
s=Queue(2) 初始化一个大小为2的队列
s.is_empty() 初始化后,队列为空,返回True
s.cnqueue(1) 将1加入队列
s.cnqueue(2) 将2加入队列
s.is_full() 加入两个队列元素,队列已满,返回True
s.dequeue() 移除队列中的一个元素返回1
s.dequeue() 移除队列中的一个元素返回2
s.is_empty() 队列为空,返回True
‘‘‘
class Queue(object):
def __init__(self,n):
self.n = n
self.l = []
def is_empty(self):
if not self.l:
return True
def is_full(self):
if len(self.l) < self.n:
return True
return False
def cnqueue(self,k):
if self.is_full():
self.l.append(k)
def dequeue(self):
self.l.pop(0)
103、
# 编程实现一个后进先出的队列类,能指定初始化时栈大小,以及push,pop,
# is_empty,is_full四种方法
‘‘‘
s=Stack(2) 初始化一个大小为2的栈
s.is_empty() 初始化后,栈为空,返回True
s.push(1) 将1加入栈
s.push(2) 将2加入栈
s.is_full() 加入两个栈元素,栈已满,返回True
s.pop() 移除栈中的一个元素返回1
s.pop() 移除栈中的一个元素返回2
s.is_empty() 栈为空,返回True
‘‘‘
class Stack(object):
def __init__(self,n):
self.n = n
self.l = []
def is_empty(self):
if not self.l:
return True
def is_full(self):
if len(self.l) < self.n:
return True
return False
def push(self,k):
if self.is_full():
self.l.append(k)
def pop(self):
self.l.pop()
104、有一个数组,[3,4,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中没有重复数的和
答:
l = [3,4,1,2,5,6,6,5,4,3,3]
def xxx(l):
d = {}
s = 0
for i in l:
if i not in d:
d[i] = 1
else:
d[i] += 1
for k,v in d.items():
if v == 1:
s += k
return s
105、从0-99折100个数中随机取10个,要求不能有重复,可以自己设计数据结构
答:
import random
def ran():
l = []
while len(l) < 10:
x = random.randint(0, 11)
if x not in l:
l.append(x)
return l
106、Cookie和Session有什么区别
答:Cookie是把所有数据保存在用户浏览器的键值对
Session是把数据保存在服务器后端的键值对,通过保存在用户端的Cookie值来调用
107、HTTP协议是有状态协议还是无状态协议,如何从两次请求中判断是同一用户
答:无状态协议,通过cookie或session的传递来判断用户身份
108、以下代码将输出什么
l = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]
print(l[10:])
答:空列表
109、以下代码的输出将是什么,说出你的答案,并解释
def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList(‘a‘)
print(list1)
print(list2)
print(list3)
你将如何修改函数的定义来产生期望的结果
答:[10, ‘a‘][123][10, ‘a‘],将list=[]写在函数体中
110、给定一个整数数组,返回两个数字索引,使得他们相加和一个目标值相等
例如nums = [2,7,11,15] 目标是9,返回[0,1]
nums = [2,7,11,15]
def n(nums,aim):
for i in range(len(nums)):
for j in range(i+1):
if i == j:continue
elif nums[i] + nums[j] == aim:
return [j,i]
return None
111、arr= [1,2,3]
def bar():
arr += [5]
bar()
print(arr)
A、error B、[5] C、[1,2,3] D、[1,2,3,5]
112、Python,判断一个字典中是否有这些key:‘AAA‘,‘BB‘,‘C‘,‘DD‘,‘EEE‘(不使用for,while)
答:i in dict
113、Python一行print出1~100偶数列表(列表推导时,filter都可)
答:print([i for i in range(1,101) if i % 2 == 0])
114、1,2,3,4,5能组成多少个互不相同且无重复的三位数(程序实现)
答:
l = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
def m(l):
n = 0
for i in l:
for j in l:
for k in l:
if i == j or j == k or i == k:continue
print(i+j+k)
n += 1
print(n)
115、写出HTTP的五种请求方法
答:get post delete put head option connect
116、描述多进程开发中,join与daemon的区别
答:join是使主进程等待子进程执行完毕后主进程关闭,daemon是主进程关闭,守护进程使其他子进程关闭
117、简单描述GIL对Python的性能影响
答:使Python不能真正意义上的多线程,同一时刻只能有一个线程运行