Python生成邀請碼以及重復(fù)校驗(yàn)

org_20160626131921_113

5S壞了,用了好幾年的手機(jī)畢竟是有感情的届吁,希望明天到的屏幕能夠拯救我親愛的5S吧

背景

最近公司在弄一個(gè)邀請碼的東西李茫,要搞一個(gè)生成的機(jī)制,理論上這是后端開發(fā)做的事情知押,但是我們的前端開發(fā)也去搞了一套這個(gè)驗(yàn)證碼的東西叹螟,有興趣的朋友可以看看《Javascript實(shí)現(xiàn)的一種簡單的推薦碼算法》。我也就順帶寫了一個(gè)驗(yàn)證重復(fù)的代碼台盯,最好控制一下比如1KW不會重復(fù)就行了罢绽。

驗(yàn)證重復(fù)

其實(shí)驗(yàn)證重復(fù)的邏輯很簡單,用Python來處理就是幾行代碼的事静盅。主要流程就是從把生成的邀請碼讀取到一個(gè)列表中良价,然后用set方法去重,最后比對去重前后列表的長度,就能知道有沒有重復(fù)了明垢。

代碼如下

import time
start = time.time()
with open('test.txt', 'r') as f:
    data = f.readlines()
arr = [x.strip() for x in data]
old = len(arr)
new = len(set(arr))
print old
print new
if old == new:
    print "success"
else:
    print "error"
end = time.time()
print end-start

代碼中我加上了運(yùn)行時(shí)間的處理蚣常,可以觀察在讀取大量數(shù)據(jù)的時(shí)候的效率。

注 :請不要使用以下的方式來建立列表

testlist = []
for x in f.readlines():
    testlist.append(x)

事實(shí)證明痊银,這種方式在數(shù)據(jù)量大的情況下效率會低很多史隆。

我們來做一個(gè)測試,使用1000W條數(shù)據(jù)來處理曼验。第一種方式的結(jié)果如下:

10000000
10000000
success
5.89996790886

第二種方式的結(jié)果如下:

10000000
10000000
success
7.04926991463

當(dāng)然泌射,結(jié)果也證明了我寫的驗(yàn)證碼在1KW條的情況下,不會出現(xiàn)重復(fù)的情況鬓照。

隨機(jī)邀請碼生成

一般我們看到的序列號或者邀請碼長成這樣的:BKMv-c1Nf-IvRr-ZAsy熔酷,這種邏輯的生成也挺簡單的,就是取隨機(jī)的字母和數(shù)字豺裆,然后拼接起來就好了拒秘。

代碼如下:

#coding: utf-8
import string
import random
field = string.letters + string.digits

# 生成num位的隨機(jī)字母或數(shù)字組成的
def getSingleMa(num):
    singleMa = "".join(random.sample(field, num))
    return singleMa
# 把num個(gè)字符串拼接起來
def getAllMa(num):
    AllMa = "-".join([getSingleMa(4) for i in range(num)])
    return AllMa

# 生成num組邀請碼
def outMa(num):
    AllMaList = [getAllMa(4) for i in range(num)]
    return AllMaList

if __name__ == '__main__':
    data = outMa(10000)
    with open("test.txt", "w") as f:
        for x in data:
            f.write(x)
            f.write('\n')

這樣本地就生成了一個(gè)名為test.txt的邀請碼文件,里面有10000個(gè)邀請碼臭猜。

最后

我這種方式我驗(yàn)證了一下躺酒,在1KW條記錄的情況下,只要有4組4個(gè)字母組成的邀請碼蔑歌,基本上不會出現(xiàn)重復(fù)的情況羹应,我測試了大概20次,就只有一次出現(xiàn)了一個(gè)驗(yàn)證碼重復(fù)次屠。

當(dāng)然园匹,1E條邀請碼的情況我沒有測試,畢竟電腦配置有限劫灶,如果能夠使用多線程來生成多個(gè)文件裸违,最后再合并,應(yīng)該效果會快很多本昏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末供汛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涌穆,更是在濱河造成了極大的恐慌怔昨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒲犬,死亡現(xiàn)場離奇詭異朱监,居然都是意外死亡岸啡,警方通過查閱死者的電腦和手機(jī)原叮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奋隶,你說我怎么就攤上這事擂送。” “怎么了唯欣?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵嘹吨,是天一觀的道長。 經(jīng)常有香客問我境氢,道長蟀拷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任萍聊,我火速辦了婚禮问芬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寿桨。我一直安慰自己此衅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布亭螟。 她就那樣靜靜地躺著挡鞍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪预烙。 梳的紋絲不亂的頭發(fā)上墨微,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音扁掸,去河邊找鬼欢嘿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛也糊,可吹牛的內(nèi)容都是我干的炼蹦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狸剃,長吁一口氣:“原來是場噩夢啊……” “哼掐隐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钞馁,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤虑省,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后僧凰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體探颈,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年训措,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伪节。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片光羞。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖怀大,靈堂內(nèi)的尸體忽然破棺而出纱兑,到底是詐尸還是另有隱情,我是刑警寧澤化借,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布潜慎,位于F島的核電站,受9級特大地震影響蓖康,放射性物質(zhì)發(fā)生泄漏铐炫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一蒜焊、第九天 我趴在偏房一處隱蔽的房頂上張望驳遵。 院中可真熱鬧,春花似錦山涡、人聲如沸堤结。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竞穷。三九已至,卻和暖如春鳞溉,著一層夾襖步出監(jiān)牢的瞬間瘾带,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工熟菲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留看政,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓抄罕,卻偏偏與公主長得像允蚣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子呆贿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嚷兔,服務(wù)發(fā)現(xiàn),斷路器做入,智...
    卡卡羅2017閱讀 134,660評論 18 139
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,768評論 0 15
  • 人生有許多時(shí)候需要等待冒晰,生活中,工作中竟块,乃至于感情中壶运,事業(yè)中都需要“等風(fēng)來”。 等風(fēng)來聽是簡單浪秘,但真正能...
    聚點(diǎn)策劃閱讀 105評論 0 1
  • 在配置好百度地圖的使用權(quán)限和key值之后蒋情,繪制地圖覆蓋物步驟:1埠况、初始化地圖 2、添加覆蓋物 3恕出、覆蓋物事件監(jiān)聽m...
    王家宇閱讀 2,820評論 4 7