面试题汇总
1.回文代码
s='上海自来水水来自海上' if s==s[::-1]: print('Yes') else: print('Not')
2.元组类型
# tu=(123) # tu1=(123,) # print(type(tu),type(tu1))#<class 'int'> <class 'tuple'>,有无逗号很关键,没有逗号只有一个数据,其数据类型就是其本身 # tu=(True) # tu1=(True,1) # print(type(tu),type(tu1))#<class 'bool'> <class 'tuple'> # tu=('h') # tu1=('h',) # tu2=(int(True)) # print(type(tu),type(tu1),type(tu2))#<class 'str'> <class 'tuple'> <class 'int'>
3.
# 面试题 # a=10,b=20,一行代码实现a=20,b=10 a=10 b=20 a,b=b,a print('a=%d,b=%d'%(a,b))
4.
# 面试题 # 用for循环删除列表中的元素 # li=[1,2,3,4,5] # l=[] # for i in li: # l.append(i) # for j in l: # li.remove(j) # print(li) #[] # li=[1,2,3,4,5] # for i in range(len(li)): # li.pop() # print(li) #[]
5.
# 面试题 #一行代码实现s='1111',转变成list s='1111' print(s.split())#['1111']
6.
a = [1, 2] a[1] = a #a=[1,[1,2]] a=[1,[1,[1,2]]] a==[1,[[1,[1,[1,2]]]]] ... print(a[1])#[1, [...]]
7.生成器面试题
def add(n,i): return n+i def test(): for i in range(4): yield i g=test() for n in [1,10]: g=(add(n,i) for i in g) print(list(g)) # 1.g是一个生成器,不调用则不会执行 # 2.进入for循环 # n=1 # g1=(add(n,i) for i in g) # n=10 # g2=(add(n,i) for i in g1) # g1是一个生成器 # g2是一个生成器 # 3.执行了list(g2)则调用g2 # g2中for i in g1 # 调用了g1 # 此时n=10 # 调用g1,g1中有for循环调用g # g=[0,1,2,3] # g1=[10,11,12,13] # 继续调用g1 # g2=10+g1 # 所以list(g2)=[20,21,22,23]
8.
输入'abab' 输出 True 样例解释:输入可由ab重复2次组成 输入'aba' 输出False
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def get_lst(s): # 得到列表 s=','.join(s) return s.split(',') def get_factor(s): # 得到因子 new_s = ','.join(s) s_lst = new_s.split(',') # 得到有由什么组成的 s_lst = list(set(s_lst)) # 排序 s_lst = sorted(s_lst) # 得到组成字符串的因子 s_res = ''.join(s_lst) return s_res s_lst=get_lst(s) factor=get_factor(s) def func(factor,s_lst): '''得到最终结果''' last_cod=factor[-1] for i in range(len(s_lst)): if s_lst[i]==last_cod: s_lst[i]+='|' resust=''.join(s_lst) resust_lst=resust.strip('|').split('|') num=0 for i in resust_lst: if i==factor: num+=1 else: return False return (True,f'输入是由{factor}重复"{num}"次组成的') print(func(factor,s_lst))