• 005使用 Python 生成 200 个激活码


    题目:使用 Python 生成 200 个不重复的激活码

    编写思路
    # 激活码一般是由26个大写字母和10个数字任意组合而成
    # 长度为12位或者16位的居多激活码
    # 一个激活码里的字符是可以重复的,而且必须要保证激活码是不能重复的

    测试用例

    # 1、随机生成字符:数字加字母
    # 2、生成200个
    # 3、去重

    编码:

    第一步:随机生成16位字母跟数字的字符串

    1.调用ramdom模块,使用了import random

    2.choice()  方法返回一个列表,元组或字符串的随机项

    使用了random.choice(seed),从seed中随机获取字符串

    3.join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串

    join()方法语法:str.join(sequence) 

    使用"".join(sa)将随机生成的16个字符串连接在一起

     1 import random
     2 
     3 # 生成16位字符串
     4 def random_str():
     5     seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
     6     sa = []
     7     for i in range(16):
     8         sa.append(random.choice(seed))
     9     salt = "".join(sa)
    10     print(salt)
    11     return salt

    第二步:生成200个字符串

    使用for循环,调用random_str()函数

    1     for i in range(200):
    2         L.append(random_str()) 

    第三部:删除重复的激活码

    1.添加删除重复激活码函数

    当两个激活码相同时,打印出重复激活码,并对该激活码进行标识

    2.删除重复激活码

    对标识过的激活码进行删除

    def Removal():
        for i in range(200):
            for j in range(i+1,200):
                if L[i] == L[j]:
                    print("重复的激活码:", L[i])
                    L[i] = '-1'
        i = 0
        while i < len(L):
            if L[i] == '-1':
                print("删除重复元素", L[i])
                L.remove(L[i])
                i -= 1
            else:
                i +=1

    完整代码如下:

    import random
    
    # 生成16位字符串
    def random_str():
        seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        sa = []
        for i in range(16):
            sa.append(random.choice(seed))
        salt = "".join(sa)
        print(salt)
        return salt
    
    # 去除重复激活码
    def Removal():
        for i in range(200):
            for j in range(i+1,200):
                if L[i] == L[j]:
                    print("重复的激活码:", L[i])
                    L[i] = '-1'
    
    
    if __name__ =="__main__":
        L = []
        for i in range(200):
            L.append(random_str())  #生成两百个激活码
        L[0] = L[1] #校验L[0]=L[1]时,是否删除重复
        Removal()
        i = 0
        while i < len(L):
            if L[i] == '-1':
                print("删除重复元素", L[i])
                L.remove(L[i])
                i -= 1
            else:
                i +=1

     备注:例子还不完善,重复的激活码被删除后,没有补充进新的激活码,可能导致激活码数量不足200个

  • 相关阅读:
    Vector Dictionary HashMap
    崩溃java (打印当前类的地址)
    colspan、rowspan的使用
    基础操作
    安装vuex-devtools插件
    在使用Vuex插件进行状态管理的步骤
    运行cnpm run dev出现错误解决办法
    在使用vue开发时,文件路径的引用(给文件起别名)
    下载脚手架vue.cli出现的问题
    什么是闭包?
  • 原文地址:https://www.cnblogs.com/kkkhycz/p/11627862.html
Copyright © 2020-2023  润新知