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+'\n' #一個完整的郵箱號 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+'\n' #list轉字符串
35  emails.add(email) 36     with open('user.txt','w') as fw: 37         fw.writelines(emails)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM