设为首页 收藏本站
查看: 1290|回复: 0

[经验分享] 【python】13位随机序列号生成工具 源码分析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-13 08:31:43 | 显示全部楼层 |阅读模式
0X00  背景
    最近在学习python 这门语言,刚学完for循环,对于很多语句语法都不太熟悉。就在今天,看到有某个网站的活动,需要输入一个13位的序列号来判断你是否中奖,但是这个13位序列号是需要购买他们家的产品才能获得,得耗费一定的金钱,于是我就在想,是不是能自己写一个序列号生成器来碰碰运气,所以决定运用刚学的python的初级知识进行编写。
0X01  知识点准备
    这个工具主要的功能是生成随机字母做序列号,python中的random()函数的作用就是随机生成一个字符串或数字。下面对所用到的函数进行简单介绍:
    random.randint(a,b)
随机生成一个范围在 a <=  N  <= b 之内的随机数N,如:
1
2
3
import random
a = random.randint(2,5)
print(a)



    random.randrange(a)
    该函数与上一个功能一样,不同的是只需要一个参数,随机生成的数字范围 0 <= N <= a ,从零开始,到a-1时结束。
1
2
3
import random
a = random.randrange(5)
print(a)



    random.choice(seq)
    此函数功能是从字符串序列seq中随机选择一个字符串,如果序列为空,则返回IndexError.
1
2
3
seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
a   = random.choice(seq)
print(a)



0X02  功能需求

    通过分析已知的13位序列号,发现有规律可循,序列号基本上可以分为两种:
    1、序列号分为三部分,第一部分为前4位为随机字母,第5位和第6位是随机数字,后7位为随机字母;
    2、这种序列号基本无规则,只有一条规则,那就是13位随机序列号中,只能出现2位为随机数字,其余的都随机生成字母;
0X03  源码
    由于刚学python没多久,故只对第一种情况进行编码,第二种情况有兴趣的童鞋可以把编码完善或者简化一下,如以下代码有错或者可以简化的地方,欢迎指出!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85939-1-1.html 上篇帖子: python 自动下载网站相关附件 下篇帖子: python用for循环实现冒泡排序 python 序列号
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表