生成随机邮箱名
一、研发内容
1、v1.0 框架优化:面向过程思想
"""
V1.0 生成指定长度、指定数量的邮箱名
(1)以 面向过程 的思想进行获取邮箱账号的结构设计、
(2)输入定义到了main函数,输出定义到了get_emaildata\save_emaildata
"""
import csv
import random
import string
# 生成一个邮箱
def get_emaildata(minlen, maxlen, emaillist):
# 为下面的服务
num = random.randint(minlen, maxlen)
str = ""
for i in range(1, 31):
str += string.ascii_letters + string.digits + string.ascii_lowercase
# 核心代码,生成email
email = "".join(random.sample(str, num))
rex = random.choice(emaillist)
email = email + rex
return email
# 将列表的内容,保存到文件当中
def save_emaildata(elist):
file = open("emaildata.csv", "w", newline="")
write = csv.writer(file)
for element in elist:
write.writerow([element])
file.close()
if __name__ == '__main__':
minlen = int(input("请输入最小长度:"))
maxlen = int(input("请输入最大长度:"))
count = int(input("请输入需要的组数:"))
emaillist = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
elist = []
for i in range(1, count + 1):
emaildata = get_emaildata(minlen, maxlen, emaillist)
elist.append(emaildata)
save_emaildata(elist)
2、v2.0 框架优化:面向对象思想
"""
V2.0 生成指定长度、指定数量的邮箱名
(1)以 面向对象 的思想进行获取邮箱账号的结构设计、
需要明确:类的数目、类命名、类属性、类方法(一个独立的处理过程)
"""
import csv
import random
import string
# 类的定义
class CreatEmail:
# 在类的初始化方法中进行类的属性定义
def __init__(self):
self.minlen = 10
self.maxlen = 10
self.count = 10
self.erex = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
self.elist = [] # 设置为空列表,第一个方法给这里返回数据,供给第二个方法用
# 定义getemail方法
def get_emaildata(self):
# 为下面的服务
num = random.randint(self.minlen, self.maxlen)
str = ""
for i in range(1, 31):
str += string.ascii_letters + string.digits + string.ascii_lowercase
# 核心代码,生成email
email = "".join(random.sample(str, num))
rex = random.choice(self.erex)
email = email + rex
self.elist.append(email)
# 定义了保存数据到文件中的方法
def save_emaildata(self):
file = open("emaildata1.csv", "w", newline="")
write = csv.writer(file)
for element in self.elist:
write.writerow([element])
file.close()
if __name__ == '__main__':
# 实例化类的对象
emailobj = CreatEmail()
# 获取count属性的值
count = emailobj.count
# 定义循环调用
for i in range(1, count + 1):
emailobj.get_emaildata()
emailobj.save_emaildata()
3、v3.0 脚本传递
"""
V3.0 生成指定长度、指定数量的邮箱名
(1)给类传递参数
"""
import csv
import random
import string
# 类的定义
class CreatEmail:
# 在类的初始化方法中进行类的属性定义
def __init__(self, minlen, maxlen, count):
self.minlen = minlen
self.maxlen = maxlen
self.count = count
self.erex = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
self.elist = [] # 设置为空列表,第一个方法给这里返回数据,供给第二个方法用
# 定义getemail方法
def get_emaildata(self):
# 为下面的服务
num = random.randint(self.minlen, self.maxlen)
str = ""
for i in range(1, 31):
str += string.ascii_letters + string.digits + string.ascii_lowercase
# 核心代码,生成email
email = "".join(random.sample(str, num))
rex = random.choice(self.erex)
email = email + rex
self.elist.append(email)
# 定义了保存数据到文件中的方法
def save_emaildata(self):
file = open("emaildata3.csv", "w", newline="")
write = csv.writer(file)
for element in self.elist:
write.writerow([element])
file.close()
if __name__ == '__main__':
# 实例化类的对象
minlen = 10
maxlen = 10
count = 100
emailobj = CreatEmail(minlen, maxlen, count)
# 获取count属性的值
count = emailobj.count
# 定义循环调用
for i in range(1, count + 1):
emailobj.get_emaildata()
emailobj.save_emaildata()
二、碰到的问题
问题1:从列表中,如何获取随机值?
(1)取1个值
变量名 = random.choice(列表名)
(2)取2个值
变量名 = random.sample(列表名,1)
变量名 = random.sample(列表名,2)
问题2:给列表中增加元素不停的追加值?
for i in rang(a,b):
c = "一定规则计算后得出的"
list.append(c)
问题3:如何进行类的设计?
1、明确类的个数
2、类命名
3、类属性:输入是什么,输出是什么
4、类的方法:输入是什么决定了给类的属性赋值。一个处理流程定义为一个方法。