1. 程式人生 > >python-隨機生成N條郵箱號

python-隨機生成N條郵箱號

div pan choice 集合 字母 int 大小寫 lin case

需求:
產生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)

python-隨機生成N條郵箱號