python-随机生成N条邮箱号

Posted you-me

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-随机生成N条邮箱号相关的知识,希望对你有一定的参考价值。

 需求:
      产生N条邮箱号
          1、写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱
          2、产生的邮箱不能重复,且邮箱前面的长度是6-12之间
          3、产生的邮箱必须包含大写字母、小写字母、数字和特殊字符
          4、邮箱后缀可以选择163.com、qq.com、sina.com、126.com
 思路:
          必须包含大写、小写、数字、特殊字符,产生的N个手机号不能重复:
          1、方法一:可以在大写、小写、数字、特殊字符里面每样取几个字符,这样就同时包含四种字符了。
          2、方法二:取到的邮箱号分别与大写、小写、数字、特殊字符取交集来判断是否同时包含了四种字符。


          注:while()循环:当while后面的条件为真,才执行while循环体内的while suite,直到条件为假时,退出循环。

 1 import random
 2 import string
 3 #方法一:
 4 def random_email(n):
 5     emails=set()#定义一个空的集合,存储生成的N个邮箱号
 6     while len(emails)!=n:
 7         email_len=random.randint(6,12) #指定一个范围随机取整数
 8         email_end=random.choice((@163.com, @qq.com, @sina.com, @126.com)) #随机取一个元素
 9         #在小写、大写、特殊字符、数字里分别每样取一个字符,长度为4
10         email_s=random.choice(string.ascii_lowercase)+random.choice(string.ascii_uppercase)+random.choice(string.punctuation)+random.choice(string.digits)
11         #剩下的2-8个字符在大小写、特殊字符、数字中随机取出来
12         str=string.digits+string.punctuation+string.ascii_letters
13         str_len=email_len-4
14         email_e=random.sample(str,str_len) #随机选取几个元素,返回list
15         email_start=list(email_s)+email_e #字符串转list
16         random.shuffle(email_start) #打乱列表,返回值为空
17         email=‘‘.join(email_start)+email_end+
 #一个完整的邮箱号  list转字符串
18         emails.add(email)
19     with open(user.txt,w) as fw:
20         fw.writelines(emails)
21 
22 #方法二:
23 def random_email2(n):
24     emails=set() #定义一个空的集合,存储生成的N个邮箱号
25     while len(emails)!=n:
26         email_len=random.randint(6,12) #指定一个范围随机取整数
27         email_start=random.sample(string.ascii_letters+string.punctuation+string.digits,email_len) #sample()随机取几个元素,返回值是list  ‘‘.join() :list转字符串
28         email_end=random.choice((@163.com, @qq.com, @sina.com, @126.com)) #随机取一个元素
29         #取到的邮箱号分别与大写、小写、数字、特殊字符取交集来判断是否同时包含了四种字符。
30         if set(email_start) & set(string.ascii_lowercase) and 31             set(email_start) & set(string.ascii_uppercase) and 32             set(email_start) & set(string.punctuation) and 33             set(email_start) & set(string.digits):
34             email=‘‘.join(email_start)+email_end+
 #list转字符串
35             emails.add(email)
36     with open(user.txt,w) as fw:
37         fw.writelines(emails)

 













以上是关于python-随机生成N条邮箱号的主要内容,如果未能解决你的问题,请参考以下文章

python随机生成两个数字

python随机生成近100年内的200个人的生日,统计同一天出生的人数,并按照人数的多少从高到底排序?

python 生成随机字符串

python怎样生成一个随机矩阵

用NLTK/Python生成一串N个随机英文单词

python怎样生成一个随机矩阵