常见的python自动化测试的面试题目

1. 给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
方法一:
def ele_sort(data,n):
d={}
for i in data:
d[i]=data.count(i) #将元素出现的次数 作为字典键值对的value值,组成(i:d[i]==>元素:元素出现的次数)
print(d.items()) #type(d.items())--><class 'dict_items'>

sort_data = sorted(d.items(),key=lambda item:item[1],reverse=True)
for i in range(0,n):
print('排名第{}的元素:{},出现了{}次'.format(i+1,sort_data[i][0],sort_data[i][1]))


if __name__ == '__main__':
l = [3, 4, 5, 3, 2, 5, 6, 2, 8, 9, 2, 4, 2, 5, 6, 3, 2, 4, 5, 5, 3, 2, 1, 5, 6, 5]
n = int(input('请输入小于元素个数的正整数:'))
ele_sort(l,n)

方法二:(使用set集合操作)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def data_sort(data,n):
data_new = set(data) #将重复的数据去掉
d={}
for i in data_new:
d[i]=data.count(i)
print(d.items())

list_data = sorted(d.items(),key=lambda item:item[1],reverse=True)
for i in range(0,n):
print('排名第{}的元素:{},出现{}次'.format(i+1,list_data[i][0],list_data[i][1]))


if __name__ == '__main__':
l = [3, 4, 5, 3, 2, 5, 6, 2, 8, 9, 2, 4, 2, 5, 6, 3, 2, 4, 5, 5, 3, 2, 1, 5, 6, 5]
n=int(input('请输入小于元素个数{}的正整数:'.format(len(set(l)))))
data_sort(l,n)

代码难点解读:

1
2
3
4
5
6
7
8
9
d.items():
1. 它的数据类型是:dict_items 以列表返回可遍历的(键, 值) 元组数组
2. 注意:返回不是列表:是一个存放多个元祖的高仿列表,[(key,value),(key,value),(key,value)...]
3. 不能用下标,可用for循环
sorted(d.items(),key=lambda item:item[1],reverse=True)
1. sorted(iterable,key,reverse)函数,参数key来决定我们根据那个字段对列表元素进行排序,
2. sorted(iterable,key,reverse)函数返回一个新列表,其中包含按升序排列的iterable中的所有项
3. key=lambda 元素: 元素[字段索引]
4. lambda item:item[1] 表示对元素第二个字段(就是 value)进行排序

2. 从字符串‘abcdba‘中找出第一个不重复的字符,方法不限

方法一: 使用count()函数 (查看元素在数据中出现的次数)

1
2
3
4
5
6
7
8
9
10
11

def find_ele(data):
for i in data:
if data.count(i)==1: #元素在数据data出现的次数
print('第一个不重复的字符是:{}'.format(i))
break


if __name__ == '__main__':
s= input('请输入随意的字符串:')
find_ele(s)

方法二: 使用split()切割函数(切割后 长度为2 说明该元素只存在一个)

1
2
3
4
5
6
7
8
9
10
11
def find_ele(data):
for i in data:
if len (data.split (i)) == 2:
# data='abcdba' data.split(a)===>['','bcdb',''], data.split(b)===>['a','cd','a']
print ('第一个不重复的字符是:{}'.format (i))
break


if __name__ == '__main__':
s = input ('请输入随意的字符串:')
find_ele (s)