標籤:python 序號 產生器 源碼 random 字串
By Dolphin,BeiJing,20150712
0X00 背景
最近在學習python 這門語言,剛學完for迴圈,對於很多語句文法都不太熟悉。就在今天,看到有某個網站的活動,需要輸入一個13位的序號來判斷你是否中獎,但是這個13位序號是需要購買他們家的產品才能獲得,得耗費一定的金錢,於是我就在想,是不是能自己寫一個序號產生器來碰碰運氣,所以決定運用剛學的python的初級知識進行編寫。
0X01 知識點準備
這個工具主要的功能是產生隨機字母做序號,python中的random()函數的作用就是隨機產生一個字串或數字。下面對所用到的函數進行簡單介紹:
random.randint(a,b)
隨機產生一個範圍在 a <= N <= b 之內的隨機數N,如:
import randoma = random.randint(2,5)print(a)
random.randrange(a)
該函數與上一個功能一樣,不同的是只需要一個參數,隨機產生的數字範圍 0 <= N <= a ,從零開始,到a-1時結束。
import randoma = 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 , 20150712import random# Generate random string Part Onestra = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘ #定義隨機產生字串的範圍strb = ‘‘i = 4;while i > 0 : #產生第一部分前4位隨機字串的迴圈strb += random.choice(stra)i -= 1print("Part One:",strb)#Generate random string Part Twostra2 = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘strb2 = ‘‘i2 = 7while i2 > 0 : #產生第二部分後7位隨機字串的迴圈strb2 += random.choice(stra2)i2 -= 1print("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】13位隨機序號產生工具 源碼分析