生成随机的手机号码
random 随机模块
random是Python中内置的随机模块,可以用来生成一些随机值。
random.randint 随机指定区间数字
random.choice 随机从列表中选择元素
# 导入Python内置的random 模块
import random
# 生成随机数字 0-9
n = random.randint(100,999) # 从指定的数字区间中生成随机值
print(n) # 648
# 随机从列表中选择一个值
nums = ["132","130","131","133","134","135","136","137","138","139",
"155","157","159"]
# 随机从列表中选择一个元素
num = random.choice(nums)
print(num)
首3位可以从列表中随机抽取,后8位通过 循环 依次生成8个数字,将数字转换字符串进行拼接。
# 导入Python内置的random 模块
import random
# 随机从列表中选择一个值
nums = ["132","130","131","133","134","135","136","137","138","139",
"155","157","159"]
# 随机从列表中选择一个元素 作为手机号的前3位。
num = random.choice(nums)
print(num)
# 定义空的字符串
p8 = ""
# 生成8个随机数字
for i in range(8):
# 每次循环都生成一个随机数字
n = random.randint(0,9)
# 将数字n跟 p8 进行拼接 因为是n是数字,将n转换位字符串进行拼接
p8 = p8+str(n)
print(p8)
# 手机号
print(num+p8) # 13122336524
- random 随机值
- for 循环
- 类型转换, 将数字转换 字符串
- 字符串拼接
计算1-100之和
# 初始值位0
s = 0
# 循环100次。i的值 0 - 100
for i in range(101):
# 循环1次,将上次运算的结果进行递增。
s = s + i
print(s)
嵌套循环-不同测试数据组合
设计异常场景的测试数据的时候,比如登录接口,有用户名,密码
上面的用户名和密码都是异常场景数据,请根据提供的数据将 所有可能用户米密码组合 场景 输出。
names = ["****&&&&","1110",""]
passwords ["abc12","abcabcabcabcbabc1231231231",""]
使用嵌套循环
names = ["****&&&&","1110",""]
passwords = ["abc12","abcabcabcabcbabc1231231231",""]
for name in names:
for passwd in passwords:
print(f"使用用户名 {name}, 密码 {passwd} 进行登录")
while 循环
在不确定循环次数的时候,可以使用while 循环。
import random
# 设置手机随机初始密码
password = random.randint(0,999999)
# 随机破解密码 使用while 循环
print(f"生成原始密码:{password}")
random_pass = 0 # 设置初始值
print("开始随机破解密码")
while random_pass != password:
# 每次生成随机数 进行破解
random_pass = random.randint(0,999999)
print(f"使用密码{random_pass} 进行破解")
# while 循环结束
print("破解成功")
if 判断
import random
score = random.randint(-10,120)
print(f'分数为 {score},评价',end=" ")
if score >=0 and score < 60:
print("不及格")
elif score >= 60 and score < 80:
print("良")
elif score >=80 and score <=100:
print("优秀")
else:
print("输入分数有误!")
break 中断循环
在for循环体中 ,执行循环100次 for循环就会执行100次。比如使用for循环来破解密码的时候,正常来讲, 如果破解成功,后面的密码就不需要再尝试了。 可以 for 循环中添加 break 来中断。
中断for 循环
import random
# 生成原始密码
password = random.randint(0,9999)
print(f"原始密码为: {password}")
# 使用for 循环来进行破解,0-9999 依次来试试
for i in range(10000):
print(f"使用 {i}进行破解")
if i == password:
print("-----破解成功------")
# 后面的值就不再运行了
break
中断while循环
还是 破解密码的例子,也可以使用while 循环 依次取值来进行破解。
import random
# 生成原始密码
password = random.randint(0,9999)
print(f"原始密码为: {password}")
start = 0
while True:
print(f"使用 {start} 进行破解")
if start == password:
print("破解成功!")
break
# 每次破解完成之后 更新 start的值
start = start + 1
使用 for 循环, while 循环很多时候都可以,只不过 for 循环的结构看起来更加清晰,所以大家在使用的时候,根据自己掌握的熟练程度使用即可。
嵌套循环体中 break 只能中断当前循环体
如果在嵌套循环中 添加break, break 只能中断当前所在的循环中。
import random
a = random.randint(0,10)
print(f'a={a}')
for x in range(10):
print(f"x的值{x}")
for y in range(20):
print(f"y的值 {y}")
if y==a:
print("-----中断y循环-----")
break
if x == a:
print("-----中断x 外层循环,----")
break
所以在使用多层嵌套循环,如果要中断整个循环,将break 写在最外层的循环体中。 (后面做自动化的时候用不到这个,但是作为一个知识点需要了解。)
continue
在循环体中,使用break 可以中断循环, continue 不会中断所有的循环,只是中断当次循环。
for x in range(10):
print(f"x 的值 {x}")
if x == 3:
break
print("完成当次循环")
执行结果
使用continue
for x in range(10):
print(f"x 的值 {x}")
if x == 3:
continue
print("完成当次循环")
文件操作
open 文件操作
python中内置函数,可以对文件进行读写。
主要的文件操作权限
with open(file=”data.txt”,mode=’w’,encoding=’utf8’) as f:
# 写入内容
f.write("helloworld")
- with open() as f: f 类似变量, 可以任意命名
- file = “data.txt” file 是固定的 data.txt 是文件名,可以自己命名
- mode = "w" mode 是固定的 w 表示写入权限
- r 读取
- w 写入
- a 追加
- encoding = "utf8" 固定的,表示字符集使用 utf8 格式。
执行代码,可以看到在项目目录下生成文件<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1653898193709-551792ad-c9c7-40ac-a2b7-49162c349ee3.png#clientId=u7adc6751-9933-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=395&id=uce86b840&margin=%5Bobject%20Object%5D&name=image.png&originHeight=494&originWidth=1210&originalType=binary&ratio=1&rotation=0&showTitle=false&size=33548&status=done&style=none&taskId=ueb355829-6ae0-44ca-b6a6-b24bb7681a1&title=&width=968)
<a name="aZrbI"></a>
### 扩展
1. 扩展上面代码 使用for循环 往文件中写入10行helloworld
```python
with open(file="data.txt",mode='w',encoding='utf8') as f:
# 写入内容
for i in range(10):
f.write(f"{i+1} helloworld\n")
- 使用python在自己电脑的桌面上创建一个 data.txt 的文件,文件中写入 hello world
使用绝对路径
with open(file=r"C:\Users\zengy\Desktop\data.txt",mode='w',encoding='utf8') as f:
# 写入内容
for i in range(10):
f.write(f"{i+1} helloworld\n")
open 读取文件内容
使用 read 方法读取文件的内容
with open(file="data.txt",mode='r',encoding='utf8') as file:
data = file.read()
print(data)
csv 文件读写
处理csv 文件需要使用到csv模块, csv模块的使用方式 跟 random 模块的使用方式类似,可以通过import 导入。
写入到csv文件
# 导入 csv 模块
import csv
# 打开文件
with open(file="data.csv",mode='w',encoding='utf8',newline="") as f:
# 使用csv模块中自带的方法进行写入
# 1. 创建写入对象
cw = csv.writer(f)
# 2. 写入数据 csv文件写入需要传入 列表格式
cw.writerow(["用户名","密码"])
# 写入10行数据
for i in range(10):
cw.writerow([f"test{i}","123456"])
- with open(file=”data.csv”,mode=’w’,encoding=’utf8’,newline=””) as f: 固定用法
- newline=”“ 注意这里是”“ 空字符串,表示写入csv文件时不要多空行
- cw = csv.writer(f) 创建csv的写入对象,
csv.writer(f)
固定,写入文件之前必须先创建一个对象。cw作为变量名,可以任意命名。 - cw.writerow([“用户名”,”密码”]) 写入一行内容。写入的数据格式为 列表。 也就是必须传入一个列表。
写入完成之后,可以看到执行的效果。
将生成不同用户名,密码写入到csv数据文件中。
# 导入 csv 模块
import csv
names = ["****&&&&","1110",""]
passwords = ["abc12","abcabcabcabcbabc1231231231",""]
# 打开文件
with open(file="data.csv",mode='w',encoding='utf8',newline="") as f:
# 使用csv模块中自带的方法进行写入
# 1. 创建写入对象
cw = csv.writer(f)
# 2. 写入数据 csv文件写入需要传入 列表格式
cw.writerow(["用户名","密码"])
# 写入10行数据
for name in names:
for passwd in passwords:
cw.writerow([name,passwd])
读取csv文件
使用csv模块中的方法 可以读取csv文件的内容, 将内容读取出来之后,可以对这些内容进行操作。
# 导入 csv 模块
import csv
with open(file='data.csv',mode='r',encoding='utf8') as f:
# 使用csv模块中的方法来读取内容
# 1. 创建读取内容的对象
cr = csv.reader(f)
# 2. for循环取cr中内容
for x in cr:
print(x)
- with open(file=’data.csv’,mode=’r’,encoding=’utf8’) as f: 使用 read 权限读取文件,因为不再往文件中写入内容,所以不需加 newline
- cr = csv.reader(f) 使用csv的方式创建读取对象。 csv.reader(f) 固定写法。 cr 是变量名,可以随意命名。
- for x in cr: 读取内容
执行可以看到,读取出来的每行数据都是以列表格式返回给我们。
扩展
下面csv文件中存储的是中国所有的地区 身份证前6位编码。
gb2260.csv
将文件下载下来 拖拽或者复制到pycharm的项目中。
gb22060.csv文件中存放的是所有的中国地区身份证号前6位。大家写段程序,能够随机从csv文件中挑选一个地区码。
使用到的技术
创建一个空的列表
all_code = []
读取 gb2260.csv 文件
with open(file=’gb2260.csv’,encoding=’utf8’,mode=’r’) as f:
# 使用csv 创建读取对象
cr = csv.reader(f)
for code in cr:
print(code, type(code),code[0])
# 每次获取一个code 将code值存放在 all_code 中
all_code.append(code[0])
等文件读取完成之后 all_code中存放了所有的 code值
print(all_code)
使用random 随机从 all_code 中选择一个
cd = random.choice(all_code) print(f”随机选中地区码:{cd}”) ``` 整体思路
- 创建空的列表为后续存放数据做准备
- 每次读取csv文件中的一行内容,就存放到列表
- 文件读取结束,表中就有所有的数据,从数据中随机选择一个。