zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    week4:周测错题
    小程序1:登录/注册小程序
    小程序2:实现一个购物车
    day26:装饰器&面向对象当中的方法&property
    day25:7个魔术方法&5个关于类的魔术属性
    day24:多态&魔术方法__new__&单态模式
    day23:单继承&多继承&菱形继承&__init__魔术方法
    day22:面向对象封装对象操作&类操作&面向对象删除操作
    day21:正则函数&模块和包(import)
    APP探索之iAPP
  • 原文地址:https://www.cnblogs.com/you-me/p/10087686.html
Copyright © 2011-2022 走看看