写一个函数,传入数字n,产生n条邮箱。
要求:
1,邮箱不能重复。
2,邮箱前面的长度是6-12之间。
3,产生的邮箱必须包含大小写字母,数字和特殊字符,不包括的丢弃
4,邮箱后面内容从以下内容中取[@163.com, @qq.com, @sina.com,@126.com]
5,产生保存邮箱文件
这个程序不复杂,但是却调试了很久才出来,一定要记录一下,犯的错误有点低级。
import random import string def email(n): S = set() E = ['@163.com', '@qq.com', '@sina.com','@126.com'] random_string = string.ascii_letters + string.digits + string.punctuation s_lower = set(string.ascii_lowercase) s_upper = set(string.ascii_uppercase) s_digits = set(string.digits) s_punc = set(string.punctuation) while True: t = set() start = ''.join(random.sample(random_string, random.randint(6,12))) start_set = set(start) S1 = start_set & s_lower S2 = start_set & s_upper S3 = start_set & s_digits S4 = start_set & s_punc if not (S1 and S2 and S3 and S4): print(start) continue end = random.choice(E) Email = start + end S.add(Email+'\n') if len(S) == n: break L = list(S) with open('email', 'w') as f: f.writelines(L) email(10)