首页 > 编程语言 >测试开发常见算法题

测试开发常见算法题

时间:2023-11-16 09:58:34浏览次数:39  
标签:return self 常见 list 算法 测试 time test def

1.冒泡排序

def faet_sort(test: list) -> list:
    """冒泡排序"""
    for i in range(len(test)):
        for j in range(len(test)-i-1):
            if test[j] > test[j + 1]:
                test[j], test[j + 1] = test[j + 1], test[j]
    return test

2.数组排序

def list_test(x: list) -> list:
    """基数在前, 偶数在后"""
    x.sort()
    rs1 = list()
    rs2 = list()
    for i in x:
        if i % 2 == 1:
            rs1.append(i)
        else:
            rs2.append(i)
    rs1.extend(rs2)
    return rs1

3. 字符串组合-递归

def test_string(x: str) -> list:
    if len(x) == 1:
        return [x]

    # 用于存储所有排列结果的列表
    all = []
    # 对于字符串中的每个字符,依次将其作为首字符,然后递归地求解剩余字符的排列
    for i in range(len(x)):
        start_char = x[i]
        end_char = x[:i] + x[i+1:]
        sub_chars = test_string(end_char)

        # 将首字符与剩余字符的排列组合起来
        for sub_char in sub_chars:
            all.append(start_char+sub_char)

    return all

4. 迭代器、装饰器、生成器

迭代器(Iterator)是一种对象,可以通过迭代协议(即实现了 iter() 和 next() 方法)来遍历容器中的元素。迭代器可以逐个地访问容器中的元素,而不需要事先知道容器的大小。迭代器提供了一种统一的方式来遍历不同类型的数据结构,例如列表、字典、集合等。

装饰器(Decorator)是一种用于修改函数或类行为的特殊函数。装饰器可以在不修改原始函数或类定义的情况下,通过添加额外的功能来扩展其行为。装饰器常用于日志记录、性能分析、缓存等方面。装饰器使用了函数作为参数,并返回一个新的函数,这样可以方便地对函数进行包装和修改。

生成器(Generator)是一种特殊的函数,可以通过 yield 语句来生成一个序列的值。生成器可以逐个地产生值,而不需要一次性生成所有值,这样可以节省内存空间。生成器非常适合处理大量数据或者需要延迟计算的情况。

4.1 迭代器

class Book(object):
    """迭代器"""
    def __init__(self):
        self.book = ["java" , "python", "go", "vue"]
        self.cur_index = -1

    def __iter__(self):
        return self

    def __next__(self):
        if self.cur_index == len(self.book) - 1:
            raise StopIteration()
        self.cur_index += 1
        return self.book[self.cur_index]

"""

4.2 装饰器

def sum_time(func):
    """统计函数执行耗时"""
    def wrapper(*args, **kwargs):
        start_time = time()
        result = func(*args, **kwargs)
        end_time = time()
        return f"func 函数结果: {result}\n执行的耗时为: {end_time-start_time}s"
    return wrapper

@sum_time
def count(n):
    """装饰器"""
    s = 0
    for i in range(1, n+1):
        s += i ** 2
    return s

4.3 生成器

def number_generator(n):
    i = 1
    while i <= n:
        yield i
        i += 1

# 使用生成器
generator = number_generator(5)
for num in generator:
    print(num)

标签:return,self,常见,list,算法,测试,time,test,def
From: https://www.cnblogs.com/test-works/p/17835501.html

相关文章

  • 算法~base64算法理解
    base64Base64是一种用于将二进制数据编码成ASCII字符的编码方式。它主要用于在文字环境中传输或存储二进制数据,如在电子邮件、XML文件、URL参数等。Base64编码不是一种加密算法,而是一种编码方式,其主要作用是将二进制数据转换为文本数据,以便更容易在文本协议中处理。Base64......
  • 网络流与二分图的常见技巧
    stolouis&Maverikorz!写一些知识点,图论杂题过后单独开一篇。最小割最大流最小割定理对于任意网络\(G=(V,E)\),其上的最大流\(f\)和最小割\(\{S,T\}\)总是满足\(|f|=||S,T||\)。即,最大流在数值上等于最小割。最小割的可行边与必须边同一个网络的最小割......
  • 渗透测试第二次实验
    网络空间引擎:白帽汇的fofa,知道创宇的ZoomEye,360的Quake,奇安信的hunter以及shodan和censys等等利用ZoomEye实现信息收集过程:搜索在CN的windows操作系统,运行为Apache的服务器:实时资产更新:可以看到最后更新i时间是2023-11-1508:01点击右上角数据更新即可获取实......
  • 对匈牙利算法的一些解释
    首先看蓝书上的代码为什么即将开始dfs时,没有一开始就把vis[i]标记了?其实dfs的流程是从左部的一个节点出发,考察右部的一个节点,如果右部的节点已经匹配了,下次dfs直接从这个右部节点的匹配点开始计算,所以vis的标记都是标记的右部节点,左部节点是不用标记的(因为是匹配二分图,只会被访......
  • 【路径规划】基于动态窗口法DWA算法的机器人动态避障路径规划研究附Matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 【iOS逆向与安全】某茅台App算法分析还原
    1.目标某茅台软件的actParam算法分析还原。2.使用工具mac系统frida-ios-dump:砸壳已越狱iOS设备:脱壳及frida调试IDAPro:静态分析Charles:抓包工具ss:小火箭,配合Charles使用3.流程处理启动闪退在IDAPro搜索SVC得到如下函数列表:NOP掉sub_函数的最后一行汇编......
  • FIO测试工具
    一、fio简介FIO是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。支持几平所有的存储描述参数,大量对CPU、内存、进程/线程、文件、I0特性的配置。1、fio安装yuminstallgcclibaiolibaio-devel2、测试使用 ......
  • 软件测试方案该怎么做?专业第三方软件测试方案推荐
    做某项工作之前都需要有个计划或方案,软件测试亦如此。软件测试方案就是描述测试目的、范围、方法和软件测试的重点等文档。对于验证软件产品的可接受程度编写测试计划文档是一种有用的方式,可以使测试工作和整个开发工作融合起来,让资源和变更事先作为一个可控制的风险。一、......
  • MIME类型介绍及常见文件对应关系
    MIME(MultipurposeInternetMailExtensions)类型是一种用于描述消息内容的格式。它的目的是为了让不同类型的应用程序之间能够互相传输和处理消息。MIME类型通常由两部分组成:一部分是主类型(如文本、图像、音频、视频等),另一部分是子类型(如纯文本、JPEG图像、MP3音频等),两者之间用斜杠......
  • 软件测试|详解 Pytest 参数化:简化测试用例的编写
    简介Pytest是一个广泛使用的Python测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍Pytest的参数化功能以及如何使用它来简化测试用例的编写。......