zoukankan      html  css  js  c++  java
  • Python-产生随机长度的密码

    #  【需求】
    #  1、写一个生产密码的程序,输入几,就产生几条密码,密码产生的不重复。
    # 2、要求密码:长度6 - 12,随机产生
    # 3、密码必须包含大写字母、小写字母、数字
    # 4、产生完密码后存到一个文件里面
    #不用集合的
        #1、随机取一位数字、一位大写字母、一位小写字母 #3个字符串
        #2、生成一个6-12之间的随机数,number
        #3、把随机数减去3,剩下的随机取
    #用集合的
        #1、生成3个集合,大写字母、小写、数字3个集合
        #2、随机取6-12位的密码,从所有的大写+小写+数字里面取
        #3、取出来密码分别和大写字母、小写、数字3个集合取交集
    import string,random
    def create_password():
        start = random.choice(string.digits) + random.choice(string.ascii_lowercase) 
        +random.choice(string.ascii_uppercase)
        end = random.sample(string.digits+string.ascii_letters,random.randint(6,12)-3)
        end.append(start)
        random.shuffle(end) #打乱顺序
        password = ''.join(end) #转换为字符串
        return password
    
    def create_password2():
        number_set = set(string.digits)# 0-9
        upper_set = set(string.ascii_uppercase)
        lower_set = set(string.ascii_lowercase)
    
        while True:
            length = random.randint(6, 12)#密码长度
            before_password = random.sample(string.digits+string.ascii_uppercase+string.ascii_lowercase,length)
            p = set(before_password)
            if number_set & p and upper_set & p and lower_set & p:
                return ''.join(p)
    
    def run():
        number = input("请输入产生的条数").strip() #1000
        password_set = set()
        if number.isdigit():
            while len(password_set)!=int(number):#0,1000
                # result = create_password()
                result = create_password2()
                password_set.add(result+'
    ')
    
        with open('passwords.txt','w') as fw:
            fw.writelines(password_set)
  • 相关阅读:
    便利的开发文档工具doxygen
    父页面 js 取得弹出窗口所选择的值, 弹出窗口关闭后刷新父页面
    ASCII码对照表
    C#中Brush、Color、String相互转换
    C#获取标准北京时间
    2005数据库脚本在SQL2000上执行 注意事项
    给Image控件后台赋Source值
    Web服务枚举组件不可用
    泛型集合转化为DataSet
    网站常见关于"登录|注册"和"姓名|注销"用JS实现
  • 原文地址:https://www.cnblogs.com/brf-test/p/12951597.html
Copyright © 2011-2022 走看看