测试工程师常见程序面试题

本文列举了测试工程师在面试中可能遇到的程序题目,包括两数之和、整数反转、回文数判断、移除元素、统计唯一元素、验证回文串、质数素数问题、冒泡排序以及列表合并去重排序等,详细阐述了解题思路和方法。

1、两数之和:

给定一个整数nums列表和一个目标值target,请你在该数组中找出和为目标值的两个整数,并返回数组的下标

思路:

循环列表nums,判断i 是否在列表nums中,如果在则计算j的值(j = targer - i),紧接着去判断j有没有在nums中,如果在则输出i和j的下标(nums.index(j),nums,index(i))

def get_num():
    nums = [2,0,11,7]
    target = 9
    for i in nums:
        for j in nums:
            if i+j==target:
                print(nums.index(j),nums.index(i))
                break
#get_num()


def get_num2():
    nums = [2,0,11,7]
    target = 9
    for i in range(len(nums)):
        j = target-nums[i]
        if j in nums:
            j=nums.index(j)
            print(i,j)
            break

#get_num2()

def get_num3():
    nums = [2,0,11,7]
    target = 9
    for i in nums:
        j = target - i
        if j in nums:
            print(nums.index(i),nums.index(j))
            break
get_num3()


2、整数反转

整数反转,例:输入123,输出321 输入-123,输出-321 输入120,输出21 输入-102030 输出 30201

思路:先对num取绝对值,然后进行列表反转,然后再反转后的列表第一个元素是否为0,如果是则remove掉,然后判断num是否小于0,如果小于在新的反转后的字段串num前加一个'-'
def test():
nums=-102030
#abs:取绝对值
nums_list = list(str(abs(nums)))
nums_list.reverse()
print(nums_list)
#此处的nums_list为:['0', '3', '0', '2', '0', '1']
if nums_list[0]=='0':
nums_list.remove(nums_list[0])
if nums<0:
# 将列表转化为字符串
print('-'+''.join(nums_list))
else:
print(''.join(nums_list))
test()

3、回文数

判断一个整数是否为回文数,回文数是指正序(从左到右)和倒序(从右往左)读都是一样读数字

思路:

先将字符串num取绝对值并转化为列表,然后再将列表反转,紧接着去判断num和num_new是否相等,如果相等返回true,否则返回false

def test():
    num = 1981
    list_num = list(str(abs(num)))
    list_num.reverse()
    num_new = ''.join(list_num)
    if num==num_new:
        print('true')
    else:
        print("false")
test()

4、移除元素

思路:复制一个nums,for循环新复制出来的列表,但实际操作的是被复制的nums。如果循环的是nums,remove的也是nums,循环到元素2的时候,remove掉2以后,第二个元素2就不会被循环到,直接循环的是元素3,当循环到最后一个2时,其实删除的是第二个元素2,此时nums已经被循环结束,最后一个nums无法被remove

'''
移除元素:
给定nums=[0,1,2,2,3,0,4,2],val = 2
函数应该返回新的长度5,并且nums中的元素为[0,1,3,0,4]
'''
def test():
    nums = [0,1,2,2,3,0,4,2]
    val =2
    #复制一个nums为nums1,循环nums1,实际删除nums
    nums1 = nums[:]
    for i in nums1:
        if i == val:
            nums.remove(i)
        else:
            pass
    print('test1:',nums)
test()

5、统计列表只出现一次的元素

思路:for循环nums,通过调用方法nums.count(元素)来统计元素个数,紧接着再判断统计的count是否等于1,如果等于1则只出现一次

'''
统计列表只出现一次的元素
'''
def test():
    nums = [1,2,34,5,3,1,3,2]
    for i in nums:
        count  = nums.count(i)
        if count == 1:
            print(i)
        else:
            continue
test()

 6、验证回文串,不考虑字母大小写

思路:1、先将字符串str的元素改为小写,将字符串str转化成列表

           2、循环列表(注意循环的是复制出来的列表),删除空格等非字母元素

           3、再将删除元素后的列表转化为字符串

           4、反转列表,然后再将反转后的列表转化为字符串

          5、判断两个字符串是否相等

#print([chr(i) for i in range(65, 91)])  # 所有大写字母
#print([chr(i) for i in range(97, 123)])  # 所有小写字母
'''
给定一个字符串,验证它是否是回文串,不区分大小写
'''
def test():
    #str = 'A man ,a plan,a canal : Panama'
    str = 'sandf'
    str = str.lower()
    str_list = list(str)
    for i in str_list[:]:
        #ord(i)  将字母转化为数字
        if ord(i) not in range(97, 123):
            str_list.remove(i)
    str = ''.join(str_list)
    str_list.reverse()
    str_new = ''.join(str_list)
    if str == str_new:
        print("true")
    else:
        print('false')
test()

7、求质数和素数

def test():
    num=[]
    #aa = input("请输入数字:")
    for i in range(2,9):    #i[2,3,4,5,6,7,8]
       print('i:',i)
       j=2
       for j in range(2,i):
          print('j:',j)
          if(i%j==0):
             break
       else:
          num.append(i)
    print(num)

8、冒泡排序

def test():
    nums = [2,6,3,7,1,0]
    for i in range(len(nums)):
        for j in range(0,len(nums)-i-1):
            if nums[j]>nums[j+1]:
                nums[j],nums[j+1] = nums[j+1],nums[j]
    print(nums)

9、已知python两个列表,将两个列表合并并进行去重排序

思路:

(1)将两个列表合并

(2)去重,set集合是无序不重复的,所以将合并后的列表转化为不重复的set集合

(3)再将set集合转化为列表进行排序

def test():
    num1 = [1,4,2,5,1]
    num2 = [5,2,6,2,9]
    num = num1+num2
    #set集合是不重复的
    num_set = set(num)
    num = list(num_set)
    #升序排序写法
    num.sort()
    print('升序排序num:',num)
    #降序排序写法
    num1=sorted(num,reverse=True)
    print('降序排序num1:',num1)

test()
'''
运行结果:
升序排序num: [1, 2, 4, 5, 6, 9]
降序排序num1: [9, 6, 5, 4, 2, 1]
'''

10、求1+2+3+...+100的值

#计算1+2+.....+100 ,用递归函数实现  
def test(n):
    if n==1:
        return n
    return n+test(n-1)
print(test(100))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值