测试工程师python面试题_软件测试工程师常见的17道Python面试题【多测师_王sir】...

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=0for i ina:if i >0:

m+= 1

elif i <0:

n+= 1

else:pass

print "大于 0 的个数:%s" %mprint "小于 0 的个数:%s" %n2.字符串切片

字符串"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‘%a5.队列

已知一个队列,如: [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])printa6.交换

已知 a= 9, b = 8,如何交换 a 和 b 的值,得到 a 的值为 8,b 的值为 9方法1

a=9b=8a,b=b,aprint ‘a的值为:%d‘ %aprint ‘b的值为:%d‘ %b

方法2

a=9b=8

#用中间变量c

c=a

a=b

b=cprint ‘a的值为:%d‘ %aprint ‘b的值为:%d‘ %b7.水仙花

打印出100-999 所有的"水仙花数",所谓"水仙花数"是指一个三位

数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",

因为153=1 的三次方+5 的三次方+3的三次

sxh=[]for i in range(100,1000):

s=0

m=list(str(i))for j inm:

s+=int(j)**len(m)if i ==s:printi

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=0for j in range(1,i):if i % j == 0 & j

s+=jif s ==i:printi

a.append(i)

java的解法:print "1000 以内完全数:%s" %a9.排序

用 python 写个冒泡

a= [1, 3, 10, 9, 21, 35, 4, 6]

s= range(1, len(a))[::-1]print(list(s)) #交换次数

for i ins:for j inrange(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()printa#2.sort倒叙

a.sort(reverse=True)printa#3.去重

b =list(set(a))printb#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

defmi(x, n):‘‘‘计算 x 的 n 次方‘‘‘

if n ==0:return 1

else:return x*mi(x, n-1)

x= 3num= 4

printmi(x, num)15.python编程题

写一个小程序:控制台输入邮箱地址(格式为 username@companyname.com),

程序识别用户名和公司名后,将用户名和公司名输出到控制台。

要求:1. 校验输入内容是否符合规范(xx@yy.com), 如是进入下一步,

如否则抛出提示"incorrect email format"。注意必须以.com结尾2. 可以循环“输入--输出判断结果”这整个过程3. 按字母 Q(不区分大小写)退出循环,结束程序importre#判断邮箱.com结尾

defis_mail_style(x):

a=re.match(r‘[0-9a-zA-Z\_-]*@[0-9a-zA-Z]+(.com)$‘,x)ifa:

yhm= re.findall("^(.+?)@", x)print "用户名:%s" %yhm[0]

gc= re.findall("@(.+?).com", x)print "公司名:%s" %gc[0]returnTrueelse:print "incorrect email format"

returnFalse

a= raw_input("请输入:")while 1:if a == "q" or a == "Q":

exit()else:ifis_mail_style(a):breaka= raw_input(u‘请输入‘)print ‘下一步!‘

16.python编程-遍历文件

如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件?

#coding:utf-8

importosdef get_files(path=‘D:\xx‘, rule=".py"):

all=[]for fpathe, dirs, fs in os.walk(path): #os.walk 是获取所有的目录

for f infs:

filename=os.path.join(fpathe,f)if filename.endswith(rule): #判断是否是"xxx"结尾

all.append(filename)returnallif __name__ == ‘__main__‘:

b= get_files(r"D:讲课文档课件第二个月课件Python+接口框架POMDemopages")for i inb:printi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值