for 循环
for … in range(n) 指定循环次数
基本使用,用来指定循环次数
# 指定循环次数 循环10次, 每次循环的时候将值赋给 x
for 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 -- 9
for x in range(1,10):
print(x)
分析 99 乘法表
当x的值为1 的时候,分别需要 与 1-9 进行乘法运算
当x的值为2 的时候,分别需要 与 1-9 进行乘法运算
….
当x的值为9 的时候,分别需要 与 1-9 进行乘法运算
所以 使用嵌套循环。
# 循环9次 1 -- 9
for x in range(1,10):
for y in range(1,10):
print(f'{x}*{y}={x*y}')
上面的程序实现了运算,但是显示的结果的样式不太和谐。 通过修改换行。
# 循环9次 1 -- 9
for 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 -- 9
for 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 -1
star = (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 -1
star = (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}
]
# 定义空的列表 存放所有符合条件的id
gids = []
# 循环列表 拿到列表中的每个字典,将字典的值给变量g
for 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 参数化