天天看點

軟體測試工程師常見的17道Python面試題【多測師_王sir】【軟體測試】

#coding=utf-8
"""
===========================
Author:多測師_王sir
Time:2020-07-10 12:00
===========================
"""      
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      
軟體測試工程師常見的17道Python面試題【多測師_王sir】【軟體測試】
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