005-做题:使用 Python 生成 200 个激活码
Posted kkkhycz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了005-做题:使用 Python 生成 200 个激活码相关的知识,希望对你有一定的参考价值。
题目:使用 Python 生成 200 个不重复的激活码
编写思路
# 激活码一般是由26个大写字母和10个数字任意组合而成
# 长度为12位或者16位的居多激活码
# 一个激活码里的字符是可以重复的,而且必须要保证激活码是不能重复的
测试用例
# 1、随机生成字符:数字加字母
# 2、生成200个
# 3、去重
编码:
第一步:随机生成16位字母跟数字的字符串
1.调用ramdom模块,使用了import random
2.choice() 方法返回一个列表,元组或字符串的随机项
使用了random.choics(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个
以上是关于005-做题:使用 Python 生成 200 个激活码的主要内容,如果未能解决你的问题,请参考以下文章
Python 005- 使用Pyecharts来绘制各种各样的图形
python随机生成近100年内的200个人的生日,统计同一天出生的人数,并按照人数的多少从高到底排序?