for 循环在后面自动化过程中使用的场景特别多。

range生成指定序列

固定格式

  1. for x in range(n):
  2. 执行体

在循环的时候,经常跟range() 函数结合在一起使用。
循环10次。

  1. for i in range(10):
  2. print(f"开始循环,第{i}次循环")

image.png
需要注意点:

  1. for循环 循环体中 需要由tab 键的缩进。
  2. i 可以改为任意的变量名,在循环体中引用的时候只需要保持一致就可以了。

变量名不能使用数字 , 也不能使用除了 _ 之外的特殊字符 。

range(m,n)

也可以指定生成序列
和字符串中 [m:n] 一样的。
生成1-10 的数字

  1. for i in range(1,11):
  2. print(i)

image.png

range(m,n,step)

和字符串 [m:n:step] 原理一样,可以指定步长。
生成 1-100 之内的奇数.

  1. for i in range(1,101,2):
  2. print(i)

image.png

练习

计算1+2+3+4+5+6+…+100 之和。
基本的操作

  1. result = 0
  2. # +1
  3. result = result + 1
  4. print(result)
  5. # +2
  6. result = result + 2
  7. print(result)
  8. # +3
  9. result = result + 3
  10. print(result)

可以 依次通过 + 1 +2 +3 的方式 计算,人工计算非常慢
可以使用for循环。

  1. result = 0
  2. for i in range(1,101):
  3. result = result + i
  4. # 当for循环执行完成之后。 可以获取最终的结果
  5. print(result)

image.png

嵌套循环

我们在循环中添加循环。循环时候需要注意 tab键缩进

  1. for x in range(3):
  2. print(f"x的值 {x}")
  3. # 循环中可以再写循环
  4. for y in range(5):
  5. # 打印的时候 print 默认会换行 end 指定自定义结束符
  6. print(f"y的值 {y}",end="\t")
  7. # y 循环完成之后,什么都不打印,只做一个换行。
  8. print()

运行结果。
image.png
在使用嵌套循环的时候,一定要注意缩进问题。
image.png

for 循环列表

基本语法

  1. for x in 列表:
  2. 执行体

循环列表 🎈

  1. for name in ["zhangsan","lisi","","&&&***"]:
  2. print(name)

image.png
给定这样的两组数据。
用户名: “zhangsan”,””,”*&&&”
密码: “12345”,”123456”,”12345678901234567”,””
使用上面的用户名和密码进行登录,请问有多少种组合方式。

  1. usernames = ["zhangsan","","***&&&"]
  2. passwords = ["12345","123456","12345678901234567",""]
  3. for name in usernames:
  4. for passwd in passwords:
  5. print(f"用户名 {name}, 密码:{passwd}")

可以看到执行结果。
image.png

扩展

如果一个注册页面,注册用户需要三个参数

  1. 手机号
  2. 密码
  3. 验证码

  1. phones = ["13211112222","130","***&&&",""]
  2. passwds = ["123456","","abc1234"]
  3. codes = ["1234","666666",""]

请设计程序,将所有可能注册场景数据打印出来。

  1. phones = ["13211112222","130","***&&&",""]
  2. passwds = ["123456","","abc1234"]
  3. codes = ["1234","666666",""]
  4. for phone in phones:
  5. for passwd in passwds:
  6. for code in codes:
  7. print(f"phone: {phone}, passwd: {passwd}, code: {code}")
  8. print("----------------------------------")

执行结果
image.png

应用场景🎈

在做接口自动化,单接口测试的时候,比如测试注册,登录接口,需要异常数据,平时的做法是将这些异常数据手动放在csv文件中,但是学完这些python代码之后,我们也可以通过python的方式将上面生成的测试数据自动放到csv文件中。写入csv文件的操作,需要我们学完 csv模块就可以了。在这里我们先标记一下。

csv 模块结合使用

while 循环

for 循环的内容的数据是有限的。

  • 可以通过 range() 指定循环次数。
  • 也可以循环list 可以循环完。

while 循环可以无限次循环。比如在做一些密码破解的时候,使用暴力破解,不确定什么时候能够破解成功,就可以使用 while 循环一直循环下去。

基本语法

  1. while True:
  2. print("我要攻击你的服务器")

循环会一直执行下去。
image.png
如果要停止循环,需要手动停止。
image.png

使用while循环

使用while 循环的时候,一般情况下,也需要给定一个停止的条件。

  1. # 定义原始的密码
  2. passwd = "**345"
  3. print("开始破解密码")
  4. # 使用一个变量表示是否破解成功
  5. is_success = False
  6. # 没有破解成功--就一直破解
  7. while not is_success:
  8. # 可以让用户在命令行输入密码
  9. input_passwd = input("请输入密码: ")
  10. #如果输入密码正确
  11. if input_passwd == passwd:
  12. print(f"成功破解,密码为{input_passwd}")
  13. is_success = True
  14. else:
  15. print("继续破解")

执行的时候,手动在命令行中输入
image.png
这里主要介绍使用 while 循环的方法 通过下循环体内 更改变量is_succed.

input() 函数

input() 是python中自带函数 类似 print(). input() 可以提供给用户输入数据的接口。

  1. a = input("请输入内容:")
  2. print(f"输入了 {a}")

image.png

while 循环指定运行次数

指定运行10次

  1. n = 0
  2. while n<10:
  3. print(f"执行 {n} 次")
  4. # 更改n的值
  5. n = n+1 # 执行一次 将n的值增加1

image.png