0X00 背景
最近在学习python 这门语言,刚学完for循环,对于很多语句语法都不太熟悉。就在今天,看到有某个网站的活动,需要输入一个13位的序列号来判断你是否中奖,但是这个13位序列号是需要购买他们家的产品才能获得,得耗费一定的金钱,于是我就在想,是不是能自己写一个序列号生成器来碰碰运气,所以决定运用刚学的python的初级知识进行编写。
0X01 知识点准备
这个工具主要的功能是生成随机字母做序列号,python中的random()函数的作用就是随机生成一个字符串或数字。下面对所用到的函数进行简单介绍:
random.randint(a,b)
随机生成一个范围在 a <= N <= b 之内的随机数N,如:
import random
a = random.randint(2,5)
print(a)
random.randrange(a)
该函数与上一个功能一样,不同的是只需要一个参数,随机生成的数字范围 0 <= N <= a ,从零开始,到a-1时结束。
import random
a = random.randrange(5)
print(a)
random.choice(seq)
此函数功能是从字符串序列seq中随机选择一个字符串,如果序列为空,则返回IndexError.seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
a = random.choice(seq)
print(a)
0X02 功能需求
通过分析已知的13位序列号,发现有规律可循,序列号基本上可以分为两种:
1、序列号分为三部分,第一部分为前4位为随机字母,第5位和第6位是随机数字,后7位为随机字母;
2、这种序列号基本无规则,只有一条规则,那就是13位随机序列号中,只能出现2位为随机数字,其余的都随机生成字母;
0X03 源码
由于刚学python没多久,故只对第一种情况进行编码,第二种情况有兴趣的童鞋可以把编码完善或者简化一下,如以下代码有错或者可以简化的地方,欢迎指出!
# Random generate some character string
# By Dolphin , 20150712
import random
# Generate random string Part One
stra = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' #定义随机生成字符串的范围
strb = ''
i = 4;
while i > 0 : #生成第一部分前4位随机字符串的循环
strb += random.choice(stra)
i -= 1
print("Part One:",strb)
#Generate random string Part Two
stra2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
strb2 = ''
i2 = 7
while i2 > 0 : #生成第二部分后7位随机字符串的循环
strb2 += random.choice(stra2)
i2 -= 1
print("Part Two:",strb2)
# Generate random number
num1 = str(random.randrange(9)) #生成中间部分的随机数字
num2 = str(random.randrange(9))
s = strb + num1 + num2 + strb2 #将随机生成的三部分字符串进行组合
print(s)
0X04 扩展应用
通过以上实例进行练习之后,可以对此进行扩展,比如:将随机生成的字符串保存在TXT文本中;或者生成一个13位字符串的"字典";还可以写得更复杂一些,直接写个字典生成工具……
如果你仅仅只是想生成一串13位的随机字符串,没有以上我说的那两个限定条件的话,还有更简洁的代码可以实现,如下:
-------------------------------------------------------------------------------------
参考资料:
2、《Pyhton中的random模块》,Capricorn.python,
3、《使用python生成固定长度的随机字符串》,huwei,