软件测试【四】Python复杂操作

 一、Python中的数据类型:元组在python中的应用

在Python中,元组是一种不可变的数据类型,它和列表类似,但是元组创建后就不能被修改。元组使用小括号 () 来表示,其中的元素用逗号隔开。

元组在Python中的应用非常广泛,下面介绍几个常见的应用场景:

  1. 函数返回值:当函数需要返回多个值时,可以使用元组来实现。例如:
def get_user_info(user_id):
    # 查询数据库获取用户信息
    return (user_name, user_age, user_gender)
  1. 多个变量赋值:可以通过元组来进行多个变量的赋值操作。例如:
a, b, c = (1, 2, 3)

这样就可以同时将元组中的三个值分别赋给 a、b、c 三个变量。

  1. 元组作为字典的键:由于元组是不可变的,所以可以作为字典的键。例如:
dict = {('John', 25): 'Male', ('Lisa', 30): 'Female'}
  1. 访问数据库:在 Python 中,使用 MySQLdb 模块访问 MySQL 数据库时,查询得到的结果是一个元组的列表。例如:
import MySQLdb

conn = MySQLdb.connect(host='localhost', user='root', , db='test')
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
results = cursor.fetchall()

for row in results:
    print(row[0], row[1], row[2])

其中 results 是一个元组的列表,每个元组代表查询结果中的一行数据。

总之,元组是 Python 中非常重要的数据类型之一,在多个场景下都有广泛的应用。

二、range函数在python中的意义

range函数在Python中是一个用于生成一系列数字的函数,通常用于for循环中。range函数可以接受1~3个参数,分别表示起始值、终止值和步长。

例如,range(1, 10, 2) 将会生成从 1 开始,到小于 10 的整数,步长为 2 的一个列表,即 [1, 3, 5, 7, 9]。

如果只传递一个参数,那么它默认作为终止值,起始值默认为0,步长默认为1。例如,range(5) 将会生成从 0 到 4 的整数,即 [0, 1, 2, 3, 4]。

需要注意的是,range 函数返回的对象是一个可迭代对象,而不是一个列表。因此,如果想要得到一个列表,可以使用 list() 函数将其转化为列表。

同时,还可以结合其他 Python 函数来实现更加复杂的操作,比如通过 range 函数生成的列表进行切片、排序等操作。总之,range 函数是 Python 中一个非常重要、灵活和强大的函数,可以帮助开发者简化程序编写过程,并提高程序的效率。

三、for循环的定义实操

Python中的for循环可以遍历多种类型的数据结构,包括列表、元组、字典和集合等。下面是一些常见的for循环定义实操:

  1. 遍历列表

假设有一个列表存储了学生的成绩,我们可以使用for循环来遍历这个列表并计算总分和均分:

scores = [78, 85, 92, 67, 88]
total = 0
for score in scores:
    total += score
average = total / len(scores)
print("Total score:", total)
print("Average score:", average)

输出:

Total score: 410
Average score: 82.0
  1. 遍历元组

如果我们有一个元组表示班级的学生人数和男女比例,我们可以使用for循环来遍历这个元组并输出每个元素的值:

class_info = (30, 0.6, 0.4)
for info in class_info:
    print(info)

输出:

30
0.6
0.4
  1. 遍历字典

如果我们有一个字典表示班级学生的名字和年龄,我们可以使用for循环来遍历这个字典并输出每个键值对:

students = {"Tom": 18, "Jerry": 19, "Alice": 17}
for name, age in students.items():
    print(name, "is", age, "years old.")

输出:

Tom is 18 years old.
Jerry is 19 years old.
Alice is 17 years old.
  1. 遍历集合

如果我们有一个集合表示班级内所有学生的名字,我们可以使用for循环来遍历这个集合并输出每个名字:

student_names = {"Tom", "Jerry", "Alice"}
for name in student_names:
    print(name)

输出:

Tom
Jerry
Alice

总结:

以上就是Python中for循环的一些常见实操方法,通过不同的数据结构类型和相关操作,我们可以更好地理解和掌握Python中的for循环。

四、字符串、列表的切片操作

Python中的切片操作是一种非常方便和高效的方式来截取字符串和列表的子集。切片操作使用[start:end:step]这种格式,其中start表示起始位置(默认为0),end表示终止位置(默认为序列长度),step表示步长(默认为1)。

下面是一些详细的字符串和列表切片操作实例:

  1. 字符串切片

假设有一个字符串"Hello World!",我们可以使用切片操作来截取其中的子串:

string = "Hello World!"
print(string[0])        # H
print(string[-1])       # !
print(string[6:11])     # World
print(string[:5])       # Hello
print(string[6:])       # World!
print(string[::2])      # HloWrd
  1. 列表切片

假设有一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以使用切片操作来截取其中的子列表:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(lst[0])           # 1
print(lst[-1])          # 10
print(lst[2:6])         # [3, 4, 5, 6]
print(lst[:5])          # [1, 2, 3, 4, 5]
print(lst[6:])          # [7, 8, 9, 10]
print(lst[::2])         # [1, 3, 5, 7, 9]

需要注意的是,切片操作生成的是一个新的子串或子列表对象,原来的字符串或列表并没有被修改。

另外,可以通过切片操作实现反转字符串或列表的功能:

string = "Hello World!"
reversed_string = string[::-1]
print(reversed_string)   # !dlroW olleH

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
reversed_lst = lst[::-1]
print(reversed_lst)      # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

总结:

以上就是Python中字符串和列表切片操作的一些详细实例。掌握切片操作可以让我们更加高效地对字符串和列表进行操作和处理。

五、实操项目 :

烤鸭店利润计算器3.1 -如何优雅的简化之前的代码逻辑

在之前的烤鸭店利润计算器项目中,我们使用了大量的if-else语句来进行不同情况下的计算。如果数据量比较大或者需要添加更多的分类条件时,代码会变得非常复杂和冗长。因此,我们可以通过一些技巧来简化代码逻辑,让代码更加优雅和易于维护。

下面是一些比较好的优化方案:

  1. 使用字典代替if-else语句

我们可以使用一个字典来代替之前的if-else语句,将不同情况下的价格映射到相应的键值对上。这样做可以减少冗余代码并且使得代码更加易于扩展。

price_dict = {
    "北京烤鸭": 99,
    "鸭腿子": 29,
    "鸭翅": 15,
    "鸭肉卷": 20,
    "鸭血粉丝汤": 12
}
  1. 使用函数封装重复逻辑

我们可以将重复的计算逻辑封装成一个函数,避免在代码中出现重复的代码块。

def calculate_profit(price, cost, quantity):
    income = price * quantity
    profit = income - cost * quantity
    return income, profit
  1. 使用列表解析式代替循环

我们可以使用列表解析式来代替循环,使得代码更加简洁和易于理解。

income_list = [calculate_profit(price_dict[item], cost_dict[item], quantity_dict[item])[0] for item in order_dict]
profit_list = [calculate_profit(price_dict[item], cost_dict[item], quantity_dict[item])[1] for item in order_dict]

综合以上优化方案,下面是一个简化后的烤鸭店利润计算器3.1:

def calculate_profit(price, cost, quantity):
    income = price * quantity
    profit = income - cost * quantity
    return income, profit

price_dict = {
    "北京烤鸭": 99,
    "鸭腿子": 29,
    "鸭翅": 15,
    "鸭肉卷": 20,
    "鸭血粉丝汤": 12
}

cost_dict = {
    "北京烤鸭": 49,
    "鸭腿子": 9,
    "鸭翅": 5,
    "鸭肉卷": 8,
    "鸭血粉丝汤": 4
}

quantity_dict = {
    "北京烤鸭": 10,
    "鸭腿子": 20,
    "鸭翅": 50,
    "鸭肉卷": 30,
    "鸭血粉丝汤": 40
}

order_dict = {
    "北京烤鸭": 3,
    "鸭腿子": 5,
    "鸭翅": 8,
    "鸭肉卷": 10,
    "鸭血粉丝汤": 20
}

income_list = [calculate_profit(price_dict[item], cost_dict[item], quantity_dict[item])[0] for item in order_dict]
profit_list = [calculate_profit(price_dict[item], cost_dict[item], quantity_dict[item])[1] for item in order_dict]

total_income = sum(income_list)
total_profit = sum(profit_list)

print("总收入:", total_income)
print("总利润:", total_profit)

这样优化后的代码更加简洁清晰,易于阅读和维护。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/389639.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 笔记 020 redis集成

1.1 安装redis Windows 下 Redis 安装与配置 教程_redis windows-CSDN博客 2.1 引入redis坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.2 配置…

【前端高频面试题--Vue生命周期篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;前端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac;前端高频面试题--Vue生命周期篇 往期精彩内容Vue的生命周期Vue子组件和父组件执行顺序在哪个生命周…

协调尺度:特征缩放在机器学习中的重要作用

目录 一、介绍 二、背景知识 三、了解功能缩放 四、特征缩放方法 五、特征缩放的重要性 六、实际意义 七、代码 八、结论 一、介绍 特征缩放是机器学习和数据分析预处理阶段的关键步骤&#xff0c;在优化各种算法的性能和效率方面起着至关重要的作用。本文深入探讨了特征缩放的…

【论文精读】DALL·E

摘要 本文利用从互联网上收集的2.5亿个图像/文本对数据&#xff0c;训练了一个120亿参数的自回归transformer&#xff0c;进而得到一个可以通过自然语言/图像控制生成的高保真图像生成模型。在大多数数据集上的表现超越以往的方法。 框架 本文的目标为通过训练一个自回归trans…

结构体对齐规则及为什么会有结构体对齐

前言&#xff1a; 大家在学习结构体中&#xff0c;在计算结构体大小时想必会很疑惑&#xff0c;为什么结构体的大小不是按照常理像数组一样一个字节一个字节的挨在一起放&#xff1f;今天带大家一起深入探讨一下背后的规则和原因。 结构体对齐规则&#xff1a; 结构体对齐其实…

BUUCTF misc 专题(47)[SWPU2019]神奇的二维码

下载附件&#xff0c;得到一张二维码图片&#xff0c;并用工具扫描&#xff08;因为图片违规了&#xff0c;所以就不放了哈。工具的话&#xff0c;一般的二维码扫描都可以&#xff09; swpuctf{flag_is_not_here}&#xff0c;&#xff08;刚开始出了点小差错对不住各位师傅&am…

进程间通信——管道

文章目录 进程间通信的介绍进程间通信的目的进程间通信的本质 匿名管道创建管道匿名管道的特征 命名管道小结 进程间通信的介绍 进程间通信简称IPC&#xff08;Interprocess communication&#xff09;&#xff0c;进程间通信就是在不同进程之间传播或交换信息。 进程间通信的…

分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…

成员方法传参机制

一、成员方法传参机制 1、值传递&#xff1a;形参改变不影响实参 2、地址传递&#xff1a;形参改变影响实参

函数式编程的技巧

14.1.2 科里化 给出科里化的理论定义之前&#xff0c;让我们先来看一个例子。应用程序通常都会有国际化的需求将一套单位转换到另一套单位是经常碰到的问题。 单位转换通常都会涉及转换因子以及基线调整因子的问题。比如&#xff0c;将摄氏度转换到华氏度的公式是CtoF(x)x*9/…

【高级C语言】从汇编代码看volatile关键字的作用

本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客内容主要围绕&#xff1a; 5G/6G协议讲解 算力网络讲解&#xff08;云计算&#xff0c;边缘计…

apk反编译修改教程系列---简单去除apk登陆 修改vip与一些反编译基础常识【十二】

往期教程&#xff1a; 安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中…

政安晨:【示例演绎】【Python】【Numpy数据处理】快速入门(二)

环境准备 大家如果第一次看到&#xff0c;可以先从我这个演绎系列的第一篇文章开始&#xff0c;包括准备环境等等。 第一篇文章如下&#xff1a; 政安晨&#xff1a;【示例演绎】【Python】【Numpy数据处理】快速入门&#xff08;一&#xff09;https://blog.csdn.net/snowd…

怎么搭建自己的网站?

怎么搭建自己的网站 一.领取一个免费域名和SSL证书&#xff0c;和CDN 特点&#xff1a;支持Cloudflare CDN Cloudflare是全球知名的CDN提供商&#xff0c;如果你不想暴露你的源站&#xff0c;又想使用我们的二级域名&#xff0c;不需要前往Cloudflare添加域名&#xff0c;修…

【Linux取经路】文件系统之被打开的文件——文件描述符的引入

文章目录 一、明确基本共识二、C语言文件接口回顾2.1 文件的打开操作2.2 文件的读取写入操作2.3 三个标准输入输出流 三、文件有关的系统调用3.1 open3.1.1 比特位级别的标志位传递方式 3.2 write3.2.1 模拟实现 w 选项3.2.2 模拟实现 a 选项 3.3 read 四、访问文件的本质4.1 再…

STM32,嵌入式系统中的I2C协议

I2C协议——读写EEPROM 关注我&#xff0c;共同交流&#xff0c;一起成长 前言一、协议简介二、I2C特性及架构三、通信过程 前言 这是一种主要用于集成电路和集成电路&#xff08;IC&#xff09;通信&#xff0c;计算机中复杂的问题大多数就是用分层来进行解决&#xff0c;这个…

k8s-项目部署案例

一、容器交付流程 在k8s平台部署项目流程 在K8s部署Java网站项目 DockerFile 如果是http访问&#xff0c;需要在镜像仓库配置可信任IP 三、使用工作负载控制器部署镜像 建议至少配置两个标签 一个是声明项目类型的 一个是项目名称的 继续配置属性 资源配额 健康检查 五、使…

积分(二)——复化Simpson(C++)

前言 前言 simpson积分 simpson积分公式 ∫ a b f ( x ) d x ≈ b − a 6 [ f ( a ) f ( b ) 4 f ( a b 2 ) ] \int_{a}^{b}f(x)dx \approx \frac{b-a}{6}[f(a)f(b)4f(\frac{ab}{2})] ∫ab​f(x)dx≈6b−a​[f(a)f(b)4f(2ab​)] 与梯形积分类似&#xff0c;当区间[a,b]较…

Java 和 JavaScript 的奇妙协同:语法结构的对比与探索(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

卷积神经网络的基本结构

卷积神经网络的基本结构 与传统的全连接神经网络一样&#xff0c;卷积神经网络依然是一个层级网络&#xff0c;只不过层的功能和形式发生了变化。 典型的CNN结构包括&#xff1a; 数据输入层&#xff08;Input Layer&#xff09;卷积层&#xff08;Convolutional Layer&#x…