python如何生成非重复cdkey

转载自品略图书馆 http://www.pinlue.com/article/2020/04/1003/4810139721035.html

 

代码:

# -*- coding: utf-8 -*-

from random import choice

import string

import os,re,sys

dict={}

path=os.getcwd()

#specialchars="!@#$%^&*()"        #设置特殊字符(可选)

def GenPasswd(length):

#    chars=string.letters+string.digits+specialchars

chars="23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ"  #去掉字母o和O,字母i和I,字母l和L,方便区分数字0,1

num = 5;

while num > 0:

num = num - 1

j = "".join([choice(chars) for i in range(length)])

#以下判断为了避免同次执行时有重复【随机码】

if not dict.has_key(j):

dict[j]=i

return 0

print("已经重复%d次获取到相同的key,退出程序\n",num)

exit()

def usage():

usages="""

*******************

使用方法和提示:

输入[前缀] 如果全是空格或TAB(或空格和TAB的混合)默认为无前缀(等同于直接回车键)

输入[密码长度] 最小大于0

输入[密码数量] 最小大于0,该项不填,默认只生成1个密码字符

*******************

"""

print usages,

def usage_warning():

print "#"+"-"*78+"#"

u_w="""

请注意:输入[前缀] 如果全是空格或TAB(或空格和TAB的混合)默认为无前缀(等同于直接回车键)

"""

print u_w,

print "#"+"-"*78+"#"

def check(input_str):

if re.match(r"^\d+$", input_str):

pass

else:

print "填写随机码的长度和数量时,输入的字符[都必须]是数字,请重新执行!"

print("\n***按任意键继续...")

os.system("pause>nul")

def logic(arg1,arg2,arg3):

if (arg1 != "") and (arg2 == ""):

check(arg1)

if (int(arg1) != 0):

GenPasswd(int(arg1))

else:

usage()

for m in dict.keys():

merge = arg3 + m

print merge

f.write("%s\n"%merge)

elif (arg1 != "") and (arg2 != ""):

check(arg1)

check(arg2)

if (int(arg1) != 0) and (int(arg2) != 0):

for i in range(int(arg2)):

GenPasswd(int(arg1))

for m in dict.keys():

merge = arg3 + m

print merge

f.write("%s\n"%merge)

else:

usage()

else:

usage()

if __name__=="__main__":

f=open("%s/code.txt"%path,"a")

print "#"+"-"*78+"#"

print "\t功能:任意长度,任意数量 包含大小写字母,数字的随机码生成"

print "\t更新:加入前缀码输入功能"

print "\t备注:去掉字母o和O,字母i和I,字母l和L,方便区分数字0,1"

print "\t"+"writed by:联运支持 [@boban 2013-04-01]"

print "#"+"-"*78+"#"

#print "***请输入参数***:"

arg3 = raw_input("*随机码前缀 请输入【数字或字母或字数混合】,可空):")

arg1 = raw_input("*随机码长度 请输入【数字】,必填,备注:该项不包含"前缀"长度):")

arg2 = raw_input("*随机码数量 请输入【数字】,可空,备注:输入需要的随机码数量,若为空,则默认生成1个随机码):")

if re.match(r"^\s+$", arg3):

usage_warning()

arg3=""

logic(arg1,arg2,arg3)

else:

logic(arg1,arg2,arg3)

f.close()

print("\n*随机码已保存在程序所在目录code.txt文件中,请检查\n***按任意键退出...")

os.system("pause>nul")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值