不管大家愿意不愿意,现在面试测试多多少少都会出现一些编程题目,下面是小酋收集的一些常见python3面试题,助大家一臂之力。(后面将持续更新)
1、lambda 运用
sum= lambda a,b:a*b
print(sum(7,9))
2、统计字符串中每个字母的个数
from collections import Counter
a2="sdfjksajkasjdkjdsfkjlksfjkskjhklskjsdkjkfd"
res2 = Counter(a2)
print(res2)
3、字符串"not 404 found 张三 99 深圳",结果输出“张三 深圳”
import re
a3= "not 404 found 张三 99 深圳"
list3 = a3.split(" ")
res3 = re.findall('d+|[a-zA-Z]+',a3)
for s in res3:
if(s in list3):
list3.remove(s)
newstr = " ".join(list3)
print(newstr)
4、filter方法求出列表所有奇数并构造新列表,a4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式一:
a4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def fn(a):
return a%2==1
newlist = filter(fn,a4)
newlist = [i for i in newlist]
print(newlist)
方式二:
a5 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
newlist5 = [a for a in a5 if a%2==1 ]
print(newlist5)
5、对列表排序,按从大到小,a6=[5,11,99,33,89,78]
a6=[5,11,99,33,89,78]
a6.sort(reverse=True)
print(a6)
6、两个列表[1,5,7,9]和[2,2,6,8]合并为[1, 2, 2, 5, 6, 7, 8, 9]
lista=[1,5,7,9]
listb=[2,2,6,8]
lista.extend(listb)
lista.sort()
print(lista)
7、打印当前日期,如2021-03-04
datetimes = datetime.datetime.now()
datetimes = datetimes.strftime("%Y-%m-%d")
print (datetimes)
8、正则表达式匹配中,(.)和(.?)匹配区别?
import re
str1 = '<a>呵呵哒</a><a>萌萌哒</a>'
str1_1 = re.findall('<a>(.*)</a>',str1) #贪婪匹配
str1_2 = re.findall('<a>(.*?)</a>',str1) #非贪婪匹配
print(str1_1) #打印结果:呵呵哒</a><a>萌萌哒
print(str1_2) #打印结果:呵呵哒 萌萌哒
9、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
al1 = [[1,2],[3,4],[5,6]]
al1 = [ x for y in al1 for x in y ]
print (al1)
10、as=“张明 98分”,用re.sub,将98替换为100
import re
as1="张明 98分"
asn = re.sub(r'd+','100',as1)
print(asn)
11、返回一个 IP 数组"192.0.0.33?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.3",并且按 IP 最后一位由大到小排序返回
string = "192.0.0.33?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.3"
string = string.replace('?','',1).replace('?','!',1).split('!')
#string.sort(key=lambda x:x[-1],reverse=True)
string.sort(key=lambda x:int(x.split('.')[3]),reverse=True)
print(string)
12、qstring = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"
qstring = "ajldjlajfdljfddd"
nstring = set(qstring)
qstring = list(nstring)
qstring.sort(reverse=False)
qstring = "".join(qstring)
print(qstring)
13、python中copy和deepcopy区别
①复制不可变数据类型,不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。
#复制的值是可变对象(列表和字典)
astr='嗨喽'
bstr = astr
cstr = copy.copy(astr)
dstr = copy.copy(bstr)
print(astr,id(astr))
print(astr,id(bstr))
print(astr,id(cstr))
print(astr,id(dstr))
②浅拷贝copy有两种情况:
第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。
#深拷贝deepcopy:完全复制独立,包括内层列表和字典
alist=[1,2,[5,6,7]]
blist = copy.copy(alist)
clist = copy.deepcopy(alist)
print(alist,id(alist))
print(blist,id(blist))
print(clist,id(clist))
#第一种情况
alist[1]=20
print(alist,id(alist))
print(blist,id(blist))
print(clist,id(clist))
#第二种情况
alist[2][0]=50
print(alist,id(alist))
print(blist,id(blist))
print(clist,id(clist))
14、使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小
foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4]
foo.sort(key=lambda x:(x<0,abs(x)),reverse=False)
print(foo)
15、列表嵌套列表排序,年龄数字相同时,按名字排序
fee = [['张三',27],['李四',24],['王老五',24],['刘麻子',29]]
fee.sort(key=lambda x:(x[1],x[0]))
print(fee)
16、判断浮点数的运行结果是否相等
aa = 0.1
ab = 0.2
ac = 0.3
assert (aa + ab == ac) #可能丢失精度
assert Decimal(str(aa)) + Decimal(str(ab)) == Decimal(str(ac)) #不会丢失精度
如果你想入软件测试行业!这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
关注我的微信公众号【伤心的辣条】免费获取~
送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。