1. 程式人生 > 實用技巧 >軟體測試工程師常見的17道Python面試題【多測師_王sir】

軟體測試工程師常見的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程式設計題 寫一個小程式:控制檯輸入郵箱地址(格式為 [email protected]), 程式識別使用者名稱和公司名後,將使用者名稱和公司名輸出到控制檯。 要求: 1. 校驗輸入內容是否符合規範([email protected]), 如是進入下一步, 如否則丟擲提示"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+介面框架\POMDemo\pages") 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