模拟生成微软序列号python_【python】13位随机序列号生成工具 源码分析
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位的隨機字符串,沒有以上我說的那兩個限定條件的話,還有更簡潔的代碼可以實現,如下:
-------------------------------------------------------------------------------------
參考資料:
2、《Pyhton中的random模塊》,Capricorn.python,
3、《使用python生成固定長度的隨機字符串》,huwei,
總結
以上是生活随笔為你收集整理的模拟生成微软序列号python_【python】13位随机序列号生成工具 源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 书签备份
- 下一篇: 爬虫笔记之实战(一):爬取猫眼电影排行