标签:python 序列号 生成器 源码 random 字符串
By Dolphin,BeiJing,20150712
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位的随机字符串,没有以上我说的那两个限定条件的话,还有更简洁的代码可以实现,如下:
from
random
import
Random
def
random_str(randomlength
=
8
):
str
=
‘‘
chars
=
‘AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789‘
length
=
len
(chars)
-
1
random
=
Random()
for
i
in
range
(randomlength):
str
+
=
chars[random.randint(
0
, length)]
return
str
-------------------------------------------------------------------------------------
参考资料:
1、《The Python Standard Library》, ,
https://docs.python.org/3/library/random.html#module-random
2、《Pyhton中的random模块》,Capricorn.python,
http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html
3、《使用python生成固定长度的随机字符串》,huwei,
http://www.oschina.net/code/snippet_153443_4752
本文出自 “西伯利亚狼026” 博客,请务必保留此出处http://1429223.blog.51cto.com/1419223/1673590
标签:python 序列号 生成器 源码 random 字符串
原文地址:http://1429223.blog.51cto.com/1419223/1673590