测试开发面试题总结

2023-11-13

测试开发面试题

1. 通过列表推导式完成下面数据类型转换。将 ["{‘a’:11,‘b’:2}", “[11,22,33,44]”] 转换为以下格式: li1 = [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]

# 考察列表推导式
li = ["{'a':11,'b':2}", "[11,22,33,44]"]
# 方法一
new_list = []
for i in li:
    res=eval(i)
    new_list.append(res)
print(new_list)

# 方法二 列表推导式
res = [ eval(i) for i in li ]
print(res)

2. Names=[‘python’,‘java’,‘php’,‘c’,‘c++’,‘django’,‘unittest’,‘pytest’,‘pymysql’],请通过列表推导式,获取names中字符串长度大于4的元素

# 方法一
Names=['python','java','php','c','c++','django','unittest','pytest','pymysql']
new_name = []
for i in Names:
    if len(i) > 4:
        new_name.append(i)
print(new_name)

# 方法二 列表推导式
names = [i for i in Names if len(i)>4]
print(names)

3.通过字典推导式,颠倒字典的键名和值:将{‘py’: “python09”, ‘java’: “java09”} 转换为: {‘python09’: “py”, ‘java09’: “java”}

dic = {'py': "python09", 'java': "java09"}
dic1 = {v:k for k,v in dic.items() }
print(dic1)

4.将字典{‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ } 通过推导式转换为:[‘x=A’,‘y=B’,‘z=C’]

li1 = ['{}={}'.format(k,v) for k,v in dic2.items()]
li2 = [f'{k}={v}' for k,v in dic2.items()]

5.有四个数字:1、2、3、4能组成多少个互不相同且无重复数字的三位数?各是多少?

lis1 = [1,2,3,4]
for i in lis1:
    for j in lis1:
        for k in lis1:
            if i != j and j !=k and k != i:
                print(i,j,k)
# 方法二 列表推导式
lis = [x * 100 + y * 10 + z for x in range(1, 5) for y in range(1, 5) for z in range(1, 5) if
         x != y and x != z and y != z]
print(lis)

6.生成包含1到100之间的10个随机数的列表

# 方法一 常规方法
import random
liss = []
for i in  range(10):
   s = random.randint(1,100)
   liss.append(s)
print(liss)

# 方法二 列表推导式
lir = [ random.randint(1,100) for i in range(10)]
print(liss)

7.现在有一个列表li = [11,21,4,55,6,67,123,54,66,9,90,56,34,22]请将大于5的数据过滤出来,然后除以2取余数,结果放到一个生成器中

def work1():
    li = [11, 21, 4, 55, 6, 67, 123, 54, 66, 9, 90, 56, 34, 22]
    res = (i % 2 for i in li if i > 5)
    print(res)

if __name__ == '__main__':
	a = work1()
    

8.定义一个可以使用send传入域名,自动生成一个在前面加上http://,在后面加上路径/user/login的url地址,生成器最多可以生成5个url,生成5条数据之后再去生成,则报错StopIteration

使用案例:
例如:
res = g.send(‘www.baidu.com’)
生成数据res为:http://www.baidu.com/user/login

def work2():
    host = yield
    for i in range(5):
        if host:
            host = yield "http://{}/user/login".format(host)
        else:
            host = yield "http://127.0.0.1:8080/user/login"

if __name__ == '__main__':            
	g = work2()
    next(g)
    print('生成的数据:', g.send('www.baidu.com'))
    print('生成的数据:', g.send('www.taobao.com'))
    print('生成的数据:', g.send('www.sina.com'))
    print('生成的数据:', next(g))
    print('生成的数据:', g.send('www.test.com'))
    print('生成的数据:', g.send('www.iiap.com'))          

运行结果:

Traceback (most recent call last):
  File "C:\pythonProject\test\day3\homework3.py", line 61, in <module>
    print('生成的数据:', g.send('www.iiap.com'))
StopIteration
生成的数据: http://www.baidu.com/user/login
生成的数据: http://www.taobao.com/user/login
生成的数据: http://www.sina.com/user/login
生成的数据: http://127.0.0.1:8080/user/login
生成的数据: http://www.test.com/user/login

9.有一个正整数列表(数据是无序的,并且允许有相等的整数存在),编写一个能实现下列功能的函数,传入列表array,和正整数X,返回下面要求的2个数据def func(array, x) ‘‘逻辑代码’’'return count, li 1、统计并返回在列表中,比正整数x大的数有几个(相同的数只计算一次),并返回-----返回值中的的count2、获取列表中比正整数X小的所有偶数,并返回 -----------返回值中的li

有一个正整数列表(数据是无序的,并且允许有相等的整数存在),
编写一个能实现下列功能的函数,传入列表array,和正整数X,返回下面要求的2个数据
def func(array, x)
‘’‘逻辑代码’’’
return count, li
1、统计并返回在列表中,比正整数x大的数有几个(相同的数只计算一次),并返回-----返回值中的的count
2、获取列表中比正整数X小的所有偶数,并返回 -----------返回值中的li

def work3(array, x):
    """用推导式"""
    # 比x大的数
    count = len({i for i in array if i > x})
    # 正整数X小的所有偶数
    li = [i for i in array if i < x and i % 2 == 0]
    return count, li
res = work3([11, 2, 32, 12, 12, 12, 4, 24], 5)
    print(res)

运行结果:

(4, [2, 4])

10.现有有如下功能函数:def work(a,b):res = a+b print(‘a+b的结果为:’,res)调用函数当参数类型不能进行相加时,work执行会报错!如:work(10,‘a’) 需求:在不更改函数代码的前提现,实现调用work函数传入不同类型的参数是函数不报错,输出结果:您传入的参数类型不一样,无法正常执行

现有有如下功能函数:
def work(a,b):
res = a+b
print(‘a+b的结果为:’,res)
#调用函数当参数类型不能进行相加时,work执行会报错!如:work(10,‘a’)
#需求:在不更改函数代码的前提现,实现调用work函数传入不同类型的参数是函数不报错,
输出结果:您传入的参数类型不一样,无法正常执行
此题考察的是装饰器的使用

def decorator1(func):
    def wrapper(a, b):
        try:
            func(a, b)
        except:
            print("您传入的两个参数类型不一致,不能进行相加")
    return wrapper

@decorator1
def work(a, b):
    res = a + b
    print('a+b的结果为:', res)

if __name__ == '__main__':
    work(11, 'a')
    work(11,22)
    work('a','b')

运行结果:

您传入的两个参数类型不一致,不能进行相加
a+b的结果为: 33
a+b的结果为: ab

11.实现一个重运行的装饰器,可以用来装饰任何一个功能函数,只要被装饰的函数执行出现AssertionError,则重新执行该函数,同一个函数最多重运行三次。

考察装饰器的使用

# 装饰器
def rerun(func):
    def wrapper(*args, **kwargs):
        for i in range(4):
            try:
                res = func(*args, **kwargs)
            except AssertionError as e:
                if i == 3:
                    raise e
                print("执行出错啦,重新执行")
            else:
                print('执行通过')
                return res

    return wrapper

print()
@rerun
def work2():
    expected = 'abc'
    res = input('请输入实际结果:')
    assert expected == res

if __name__ == '__main__':

    work2()

运行结果:运行失败后可以再重运行3次,

请输入实际结果:123
执行出错啦,重新执行
请输入实际结果:123
执行出错啦,重新执行
请输入实际结果:123
执行出错啦,重新执行
请输入实际结果:345
Traceback (most recent call last):
  File "C:\pythonProject\test\day5\装饰器装饰类.py", line 26, in <module>
    work2()
  File "C:\pythonProject\test\day5\装饰器装饰类.py", line 9, in wrapper
    raise e
  File "C:\pythonProject\test\day5\装饰器装饰类.py", line 6, in wrapper
    res = func(*args, **kwargs)
  File "C:\pythonProject\test\day5\装饰器装饰类.py", line 22, in work2
    assert expected == res
AssertionError

12.请设计一个装饰器,接收一个int类型的参数number,可以用来装饰任何的函数,如果函数运行的时间大于number,则打印出函数名和函数的运行时间s = time.time()调用函数e = time.time()e-s

请设计一个装饰器,接收一个int类型的参数number,可以用来装饰任何的函数,
如果函数运行的时间大于number,则打印出函数名和函数的运行时间
s = time.time()
#调用函数
e = time.time()
e-s


import time


# 计算函数运行时间的装饰器
def count_time(number):
    def decor(func):
        def wrapper(*args, **kwargs):
            # 获取函数执行之前的时间
            s_time = time.time()
            res = func(*args, **kwargs)
            # 函数执行完后再次获取时间
            e_time = time.time()
            if (e_time - s_time) > number:
                print("函数名:{},运行时间:{}".format(func.__name__, e_time - s_time))
            return res

        return wrapper

    return decor


@count_time(2)
def func_1():
    for i in range(3):
        time.sleep(1)

if __name__ == '__main__':

    func_1()

运行结果:

函数名:func_1,运行时间:3.0204389095306396

13.自定义一个列表类型,实现对象之间可以使用 - 来进行操作要求:如果一个对象减去另一个对象,则把和被减对象中一样的数据给删除掉如下:li1 = MyList([11, 22, 33,22, 44])li2 = MyList([1, 22])res = li1 - li2res 打印的结果为[11,33,44]

如下:
li1 = MyList([11, 22, 33,22, 44])
li2 = MyList([1, 22])
res = li1 - li2
res 打印的结果为[11,33,44]

class MyList(list):

    def __sub__(self, other):
        new_list = [i for i in self if i not in other]
        return new_list

li1 = MyList([11, 22, 33,22, 44])
li2 = MyList([1, 22])
res = li1 - li2
print(res)

# 运行结果
# [11, 33, 44]

考察__sub__的使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试开发面试题总结 的相关文章

  • 从 Django 基于类的视图的 form_valid 方法调用特殊(非 HTTP)URL

    如果你这样做的话 有一个 HTML 技巧 a href New SMS Message a 点击新短信打开手机的本机短信应用程序并预 先填写To包含所提供号码的字段 在本例中为 1 408 555 1212 以及body与提供的消息 Hel
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • 在Python中清理属于不同语言的文本

    我有一个文本集合 其中的句子要么完全是英语 印地语或马拉地语 每个句子附加的 id 为 0 1 2 分别代表文本的语言 无论任何语言的文本都可能有 HTML 标签 标点符号等 我可以使用下面的代码清理英语句子 import HTMLPars
  • 从 Spark 数据帧中过滤大量 ID

    我有一个大型数据框 其格式类似于 ID Cat date 12 A 201602 14 B 201601 19 A 201608 12 F 201605 11 G 201603 我需要根据大约 500 万个 Is 的列表来过滤行 最直接的方
  • 如何在python mechanize中设置cookie

    向服务器发送请求后 br open http xxxx br select form nr 0 br form MESSAGE 1 2 3 4 5 br submit 我得到了响应标题 其中包含 set cookie Set Cookie
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • Django 1.3 中可以在没有用户身份验证的情况下使用管理 UI 吗?

    我想知道是否有一种简单的方法来配置 Django 管理 UI 例如 在http mysite com admin http mysite com admin 这样我就不需要验证 登录 我尝试过调整 urls py 但无法让它绕过登录屏幕 u
  • Python 中使用 globals() 的原因?

    Python 中有 globals 函数的原因是什么 它只返回全局变量的字典 这些变量已经是全局的 所以它们可以在任何地方使用 我只是出于好奇而问 试图学习Python def F global x x 1 def G print glob
  • Python Tkinter 网格复选框

    我想知道是否有一种简单的方法可以使用 Tkinter 创建复选框网格 我正在尝试制作一个由 10 行和 10 列 即 100 个复选框 组成的网格 以便每行只能选择两个复选框 编辑 我正在使用带有spyder的python 2 7 到目前为
  • 使用 Python 导入包含文本和数字数据的文件

    I have a txt file which has text data and numerical data The first two rows of the file have essential information in te
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 如何删除 pip 安装的所有软件包?

    如何从当前激活的虚拟环境中卸载 pip 安装的所有软件包 我发现这个片段作为替代解决方案 与重新创建 virtualenv 相比 删除库更加优雅 pip freeze xargs pip uninstall y 如果您通过 VCS 安装了软
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • 如何正确将 tflite_graph.pb 转换为 detector.tflite

    我正在使用tensorflow对象检测API使用tensorflow中的ssdlite mobilenet v2 coco 2018 05 09来训练自定义模型模型动物园 https github com tensorflow models
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后
  • 如何对每一行进行 value_counts 并创建一些列,其值是每个值的计数

    我得到一个数据框如下 df c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 r1 0 1 1 1 1 0 0 0 0 0 0 0 r2 1 2 2 2 2 1 1 1 1 0 0 0 r3 1 0 2 0 0
  • Pandas 2 个字段中唯一值的数量

    我正在尝试查找覆盖 2 个字段的唯一值的数量 例如 一个典型的例子是姓氏和名字 我有一个数据框 当我执行以下操作时 我只获取每列的唯一字段数 在本例中为 最后一个 和 第一个 不是复合体 df Last Name First Name nu

随机推荐