python兌換碼生成

網(wǎng)上參考的一個(gè)生成兌換碼函數(shù)

# encoding=utf8
import random
import string

def _int_to_str(x, base=36):
    """Reversed version of int(s, base=?). src: http://stackoverflow.com/questions/2267362/"""
    numerals = string.digits + string.lowercase + string.uppercase
    numerals.replace('0','')
    numerals.replace('o','')
    if x == 0:
        return numerals[0]
    sign = -1 if x < 0 else 1
    x *= sign
    digits = []
    while x:
        digits.append(numerals[x % base])
        x /= base
    if sign < 0:
        digits.append(u'-')
    return u''.join(reversed(digits))

n_codes = 10  # 生成兌換碼個(gè)數(shù)
rand_len = 6 #這里可以隨意傳入想要生成的位數(shù)
rand_limit = 36 ** rand_len
prefix = 'TX'

for x in xrange(0,n_codes):
    rand = _int_to_str(random.randrange(0, rand_limit), base=36).zfill(6)
    code_text = prefix + rand

    print code_text

這里使用了一個(gè)_int_to_str的方法 傳入的x則是0-36的n次方中間的任意一個(gè)數(shù)炸客,然后 base為36. 下面為整個(gè)函數(shù)的解析

  1. 下面_int_to_str函數(shù) 使用了一個(gè) string模塊 然后將0-9a-zA-Z包含到了一個(gè)叫numerals的變量之中低零。

  2. 如果x==0 那么返回0

  3. sign等于 如果x<0 sign等于-1 否則等于1 這一句判斷傳入的x是否為一個(gè)負(fù)數(shù)。并且取出其符號(hào) 從這一句可以看到 這個(gè)通用函數(shù) 其實(shí)并不是 前面這個(gè)作者自己寫的。而是一個(gè)通用使用方法。用于解析指定base多少位數(shù)使用。 這里后面再討論。

  4. 如果為負(fù)數(shù) 轉(zhuǎn)為正數(shù)

  5. 申明一個(gè)digits = []

  6. digits追加(numerals[傳入x % base])

  7. x/=base 這里注意了這里和上面式子呼應(yīng) 一個(gè)取的是余數(shù) 處以36取到的余數(shù)一定是0-36之間的數(shù)苞氮,然后可以轉(zhuǎn)換為string,而這里記錄每次除以之后剩余的值
    由于取的是36的n次方 這里也正好可以除n次瓤逼,這樣的話 就對(duì)應(yīng)了生成多少個(gè)隨機(jī)數(shù)了笼吟。

  8. 然后跳出循環(huán)之后 判斷符號(hào) 是否需要追加 負(fù)號(hào) 也就是 還原負(fù)號(hào)

  9. 最后再將數(shù)組重新拼接成字符串返回

由此結(jié)束這樣拆開來看 似乎還是比較清晰 合理的。后面再使用了一個(gè) zfill()函數(shù) 不滿這個(gè)數(shù)就往前用0補(bǔ)齊抛姑。 這樣看來 的確也有夠隨機(jī) 而且 base參數(shù)實(shí)際上是可變化的赞厕。這個(gè)算法 蠻有意思 所以在這里 記錄一下。與大家分享定硝。
原文地址:http://www.cnblogs.com/piperck/p/5047378.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末皿桑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诲侮,老刑警劉巖镀虐,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沟绪,居然都是意外死亡刮便,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绽慈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恨旱,“玉大人,你說我怎么就攤上這事坝疼∷严停” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵钝凶,是天一觀的道長仪芒。 經(jīng)常有香客問我,道長耕陷,這世上最難降的妖魔是什么掂名? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哟沫,結(jié)果婚禮上饺蔑,老公的妹妹穿的比我還像新娘。我一直安慰自己嗜诀,他們只是感情好膀钠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裹虫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪融击。 梳的紋絲不亂的頭發(fā)上筑公,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音尊浪,去河邊找鬼匣屡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拇涤,可吹牛的內(nèi)容都是我干的捣作。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鹅士,長吁一口氣:“原來是場噩夢啊……” “哼券躁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤也拜,失蹤者是張志新(化名)和其女友劉穎以舒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慢哈,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔓钟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卵贱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滥沫。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖键俱,靈堂內(nèi)的尸體忽然破棺而出兰绣,到底是詐尸還是另有隱情,我是刑警寧澤方妖,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布狭魂,位于F島的核電站,受9級(jí)特大地震影響党觅,放射性物質(zhì)發(fā)生泄漏雌澄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一杯瞻、第九天 我趴在偏房一處隱蔽的房頂上張望镐牺。 院中可真熱鬧,春花似錦魁莉、人聲如沸睬涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畦浓。三九已至,卻和暖如春检疫,著一層夾襖步出監(jiān)牢的瞬間讶请,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工屎媳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夺溢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓烛谊,卻偏偏與公主長得像风响,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丹禀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)状勤。 張土汪:刷leetcod...
    土汪閱讀 12,744評(píng)論 0 33
  • # 第一優(yōu)先級(jí)規(guī)則聲明: # 除了夢境鞋怀,每一個(gè)意識(shí)主進(jìn)程都必須與一個(gè)身體參與的機(jī)械進(jìn)程相匹配,否則結(jié)束意識(shí)主進(jìn)程荧降。...
    李洞BarryLi閱讀 3,858評(píng)論 0 1
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,805評(píng)論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理接箫,服務(wù)發(fā)現(xiàn),斷路器朵诫,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 20170902田亦辰爸爸田進(jìn)心賞19天 親愛的自己辛友,今天下午比較空,自己動(dòng)手汽車空氣濾芯剪返,空調(diào)濾芯的更換...
    田進(jìn)ID閱讀 121評(píng)論 0 0