软件测试工程师常见的17道Python面试题多测师_王sir
Posted xiaoshubass
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试工程师常见的17道Python面试题多测师_王sir相关的知识,希望对你有一定的参考价值。
#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020-07-10 12:00
Wechat:xiaoshubass
website:www.duoceshi.cn
===========================
"""
python练习题 1.统计 统计在一个队列中的数字,有多少个正数,多少个负数,如 a=[1, 3, 5, 7, 0, -1, -9, -4, -5, 9] #方法一 # 用列表生成式,生成新的列表 b=[i for i in a if i>0] print ‘大于0的个数:%s‘%len(b) c=[i for i in a if i<0] print ‘小于0的个数:%s‘%len(c) #方法二 # coding:utf-8 a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8] # 用传统的判断思维,累加 m = 0 n = 0 for i in a: if i > 0: m += 1 elif i < 0: n += 1 else: pass print "大于 0 的个数:%s" % m print "小于 0 的个数:%s" % n 2.字符串切片 字符串 "axbyczdj",如果得到结果“abcd” 方法一 字符串切片 a=‘axbyczdj‘ print a[0::2] #这里用a[::2]结果是一样的 方法二 a=‘axbyczdj‘ c=[] for i in range(len(a)): #对a这个字符串的长度进行遍历 if i % 2 == 0: c.append(a[i]) print ‘‘.join(c) 3.字符串切割 已知一个字符串为“hello_world_xiaowang”, 如何得到一个队列["hello","world","xiaowang"] a = ‘hello_world_xiaowang‘ b = a.split(‘_‘) print b #或者 print a.split(‘_‘) #4.格式化输出 #已知一个数字为1,如何输出"0001" a=1 print ‘%04d‘%a 5.队列 已知一个队列,如: [1, 3, 5, 7], 如何把第一个数字,放到第三个位置, 得到:[3, 5, 1, 7] insert 插入数据 a=[1, 3, 5, 7] a.insert(3,a[0]) print a[1:] #方法二 a=[1, 3, 5, 7] a.insert(3,a[0]) a.remove(a[0]) print a 6.交换 已知 a = 9, b = 8,如何交换 a 和 b 的值,得到 a 的值为 8,b 的值为 9 方法1 a=9 b=8 a,b=b,a print ‘a的值为:%d‘ % a print ‘b的值为:%d‘ % b 方法2 a=9 b=8 #用中间变量c c=a a=b b=c print ‘a的值为:%d‘ % a print ‘b的值为:%d‘ % b 7.水仙花 打印出 100-999 所有的"水仙花数",所谓"水仙花数"是指一个三位 数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数", 因为 153=1 的三次方+5 的三次方+3 的三次 sxh = [] for i in range(100,1000): s=0 m=list(str(i)) for j in m: s +=int(j)**len(m) if i == s: print i sxh.append(i) print ‘100-999的水仙花数:%s‘ % sxh 用java解法: 8.完全数 如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。 例如:第一个完全数是 6,它有约数 1、2、3、6,除去它本身 6 外,其余3 个数相加,1+2+3=6。第二个完全数是 28,它有约数 1、2、4、7、14、28, 除去它本身 28外,其余 5 个数相加,1+2+4+7+14=28。那么问题来了, 求 1000 以内的完全数有哪 a=[] for i in range(1,1000): s=0 for j in range(1,i): if i % j == 0 & j <i: s+=j if s ==i: print i a.append(i) java的解法: print "1000 以内完全数:%s" % a 9.排序 用 python 写个冒泡 a = [1, 3, 10, 9, 21, 35, 4, 6] s = range(1, len(a))[::-1] print(list(s)) # 交换次数 for i in s: for j in range(i): if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] print("第 %s 轮交换后数据:%s" % (len(s)-i+1, a)) print(a) 10.sort 排序 已知一个队列[1,3,6,9,7,3,4,6] 按从小到大排序 按从大到小排序 去除重复数字 用set a = [1, 3, 6, 9, 7, 3, 4, 6] # 1.sort 排序,正序 a.sort() print a #2.sort倒叙 a.sort(reverse=True) print a #3.去重 b = list(set(a)) print b # 11.阶乘 # 计算 n 的阶乘 # 计算 n!,例如 n=3(计算 321=6), 求 10的阶乘 # from functools import reduce # a=1 # b=reduce(lambda x,y:x*y, range(1,a+1)) # print b # def digui(x,y): # return x*y # a=1 # b=reduce(digui,range(1,a+1)) # 1,11 # print b # 12.递归函数 # def digui(n): # if n ==1: # return 1 # else: # return n*digui(n-1) # print n*digui(n-1) # a=5 # print digui(a) # 13.斐波那契数列 # 已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 # 开始的每一项都等于其前两项的和,这是斐波那契数列。求满足规律的100以内的所有数据 # a = 0 # b = 1 # while b < 100: # print b, # a,b = b,a+b # 14.幂的递归 # 计算 x 的 n 次方,如:3 的 4 次方 为 3*3*3*3=81 def mi(x, n): ‘‘‘计算 x 的 n 次方‘‘‘ if n == 0: return 1 else: return x*mi(x, n-1) x = 3 num = 4 print mi(x, num) 15.python编程题 写一个小程序:控制台输入邮箱地址(格式为 username@companyname.com), 程序识别用户名和公司名后,将用户名和公司名输出到控制台。 要求: 1. 校验输入内容是否符合规范(xx@yy.com), 如是进入下一步, 如否则抛出提示"incorrect email format"。注意必须以.com结尾 2. 可以循环“输入--输出判断结果”这整个过程 3. 按字母 Q(不区分大小写)退出循环,结束程序 import re #判断邮箱.com结尾 def is_mail_style(x): a=re.match(r‘[0-9a-zA-Z\\_-]*@[0-9a-zA-Z]+(.com)$‘,x) if a: yhm = re.findall("^(.+?)@", x) print "用户名:%s " % yhm[0] gc = re.findall("@(.+?).com", x) print "公司名:%s " % gc[0] return True else: print "incorrect email format" return False a = raw_input("请输入:") while 1: if a == "q" or a == "Q": exit() else: if is_mail_style(a): break a = raw_input(u‘请输入‘) print ‘下一步!‘ 16.python编程-遍历文件 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件? #coding:utf-8 import os def get_files(path=‘D:\\xx‘, rule=".py"): all = [] for fpathe, dirs, fs in os.walk(path): # os.walk 是获取所有的目录 for f in fs: filename = os.path.join(fpathe,f) if filename.endswith(rule): # 判断是否是"xxx"结尾 all.append(filename) return all if __name__ == ‘__main__‘: b = get_files(r"D:讲课文档课件第二个月课件Python+接口框架POMDemopages") for i in b: print i
start="13800000000" for ((i=1; i<=10; i++)) do let "num=$start+$i" md5_pass=`echo -n 123456 |openssl md5 |awk -F‘=‘ {‘print $2‘}` echo "$num:$md5_pass" >>./md5.txt done [root@localhost xiaowang]# cat md5.txt 13800000001: e10adc3949ba59abbe56e057f20f883e 13800000002: e10adc3949ba59abbe56e057f20f883e 13800000003: e10adc3949ba59abbe56e057f20f883e 13800000004: e10adc3949ba59abbe56e057f20f883e 13800000005: e10adc3949ba59abbe56e057f20f883e 13800000006: e10adc3949ba59abbe56e057f20f883e 13800000007: e10adc3949ba59abbe56e057f20f883e 13800000008: e10adc3949ba59abbe56e057f20f883e 13800000009: e10adc3949ba59abbe56e057f20f883e 13800000010: e10adc3949ba59abbe56e057f20f883e
以上是关于软件测试工程师常见的17道Python面试题多测师_王sir的主要内容,如果未能解决你的问题,请参考以下文章