for 循环
for … in range(n) 指定循环次数
基本使用,用来指定循环次数
# 指定循环次数 循环10次, 每次循环的时候将值赋给 xfor x in range(10):print(f'开始循环{x}')
在做接口压测的时候,需要生成批量的数据。 请大家使用for 循环生成1000个测试用户名,用户名以 testuser 开头,生成对应的数据: testuser1 ,,,, testuser1000
for x in range(1000):print(f'testuser{x+1}')
也可以是
for x in range(1,1001):print(f'testuser{x}')
嵌套循环
可以在循环体中嵌套循环。
for x in range(3):for y in range(5):print(f"{x} {y}")
上面的循环 共执行15次。
实现九九乘法表

乘法表 循环 9次。从1-9。 range(1,10) 生成1-9
# 循环9次 1 -- 9for x in range(1,10):print(x)
分析 99 乘法表
当x的值为1 的时候,分别需要 与 1-9 进行乘法运算
当x的值为2 的时候,分别需要 与 1-9 进行乘法运算
….
当x的值为9 的时候,分别需要 与 1-9 进行乘法运算
所以 使用嵌套循环。
# 循环9次 1 -- 9for x in range(1,10):for y in range(1,10):print(f'{x}*{y}={x*y}')

上面的程序实现了运算,但是显示的结果的样式不太和谐。 通过修改换行。
# 循环9次 1 -- 9for x in range(1,10):for y in range(1,10):# 默认打印完成会换行, end='\t' 表示不换行 有个tab 缩进print(f'{x}*{y}={x*y}',end='\t')#执行完程y循环 再进行换行print() # 换行操作

另外一种乘法表
分析
当x=1 ,y = 1
当x=2, y = (1,2)
当x=3, y = (1,2,3)
….
当x=9,y = (1,2,3,4,5,6,7,8,9)
# 循环9次 1 -- 9for x in range(1,10):for y in range(1,x+1): # y的取值为动态的,根据x的值来定# 默认打印完成会换行, end='\t' 表示不换行 有个tab 缩进print(f'{x}*{y}={x*y}',end='\t')#执行完程y循环 再进行换行print() # 换行操作

实现金子塔

首先,看到这个金子塔, 每层都有不同的 , 计算每行的 的个数。
通过仔细观察,可以看到每一层的 的个数 公式
当 i = 1 时, 的个数为 1
当 i = 2 时, 的个数为 3
当 i = 3 时, 的个数为 5
….
当 i = 10 时, 的个数为 210-1 = 19
找到每层的个数公式为 2i -1。
for i in range(1,11):# 计算每一行的 * 个数 2*i -1star = (2*i-1) * "*"print(star)

的个数现在已经可以了,但是 显示格式不对。
每行 前面都有空格。 通过仔细观察。
当i=10 的时候, 左边的空格为 0
当i=9 的时候, 左边的空格为 1
当i=8 的时候, 左边的空格为 2
….
当i=1 的时候, 左边的空格为 9
发现规律 左边的空格数为 10-i
for i in range(1,11):# 计算每一行的 * 个数 2*i -1star = (2*i-1) * "*"# 计算每行的 左边栏空格数blank = (10-i) * " "# 所以每行显示 空格+ *print(blank+star)
扩展
将上面的金子倒立过来。
def f(n):# range(10,0,-1) -1表示倒序for i in range(n,0,-1):star = (2 * i - 1) * "*"blank = (n - i) * " "# 所以每行显示 空格+ *print(blank + star)if __name__ == '__main__':f(10)
for 循环 list 列表中的内容
使用 for 循环可以将 列表中的数据 全部循环一遍。 基本语法 for x in 列表
nums = [100,50,90,88,101,45,32,0]# 循环列表中的每个元素, x表示列表中的每个元素for x in nums:print(f"nums的元素值:{x}")

在循环的时候,可以填加数据的判断。
nums = [100,50,90,88,101,45,32,0]# 将nums 中所有大于 60的值提取出来gt_60 = [] # 定义空的列表# 循环列表中的每个元素, x表示列表中的每个元素for x in nums:# 找到大于60的值if x>60:gt_60.append(x) # x追加到列表中# for 循环执行完之后print(f"所有的大于60的值:{gt_60}")
for 循环 也可以循环 元组,集合中的内容,循环方式与上面一样。
# 循环元组nums = (100,50,90,88,101,45,32,10)for num in nums:print(num)
# 循环集合nums = {100,50,90,88,101,45,32,10}for num in nums:print(num)
for 循环 字典
循环字典中的内容,与循环列表有所不同,字典中的数据,是由 key, value 两部分组成。
user = {"name":"tom","age":20,"sex":"man"}# k表示 key, v表示对应的value值for k,v in user.items():print(f'user 的key 为 {k}, 对应的值为 {v}')

for循环练习
goods = [{"g_id":1000,"price":5000},{"g_id":1001,"price":4000},{"g_id":1002,"price":5000},{"g_id":1003,"price":6000},{"g_id":1004,"price":5000}]
找到所有 price 为5000的 g_id;
分析: 需要使用到嵌套循环。
首先,goods 作为一个列表。 先对列表进行循环。
for g in goods:print(g)
循环每个列表中的每个字典,根据条件添加对应的值。
goods = [{"g_id":1000,"price":5000},{"g_id":1001,"price":4000},{"g_id":1002,"price":5000},{"g_id":1003,"price":6000},{"g_id":1004,"price":5000}]# 定义空的列表 存放所有符合条件的idgids = []# 循环列表 拿到列表中的每个字典,将字典的值给变量gfor g in goods:#print(g) # g 表示里面每一个字典# 针对每一个字典进行循环for k,v in g.items():# 添加条件 当 price的值为5000的时候if k=="price" and v==5000:# 将 g["g_id"]对应的值放在 列表中gids.append(g["g_id"])# 当所有的条件都循环完print(f'所有价格等于5000的商品id为:{gids}')
在后面做接口自动化测试,复杂参数提取会使用到这种方式。
pytest 断言
while循环
for循环是 比较明确的,可以指定循环的次数。 那么while循环可以无限循环。
基本使用
# 定一个无限循环while True:print("hello world")
上面的循环 会一直打印 helloworld, 只能手动点击 停止 按钮进行停止。
循环的时候,一般需要添加条件,让循环停止。比如循环10次。
# 定义变量count=0# 设置执行条件while count<10:print(count)# 每次循环 增加count的值count = count+1 # 让count的值递增1

if 条件判断
基本语法
if 条件: # 条件为True的时候,执行下面的代码执行代码
# 导入python中的 random 随机模块import random# 生成一个 0-1之间随机值n = random.random()print(n)if n >0.5:print(f'n的值大于 0.5, {n}')
如果两个条件。
n的值大于0.5 打印 A
否则 打印 B
# 导入python中的 random 随机模块import random# 生成一个 0-1之间随机值n = random.random()print(n)if n >0.5:print('A')else: # 如果上面条件不成立print('B')
多个条件
通过使用 elif 添加多个条件
模拟抽奖
n的值在 (0-0.1) 之间 输出 中奖1000w
n的值在 [0.1-0.2) 之间 输出 中奖500w
n的值在 [0.2-0.5) 之间 输出 中奖1w
n的值在 [0.5-0.8) 之间 输出 中奖100
其他值 输出 很遗憾
# 导入python中的 random 随机模块import random# 生成一个 0-1之间随机值n = random.random()print(n)if n>0 and n<0.1:print('中奖1000w')elif n>=0.1 and n<0.2:print('中奖500w')elif n>=0.2 and n<0.5:print('中奖1w')elif n>=0.5 and n<0.8:print('中奖100')else:print('很遗憾')
在后期接口自动化生成测试数据的时候,使用for 循环+ if 判断语句。
pytest 参数化
