天天看點

利用Python生成随機4位驗證碼

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>"""</code>

<code>           </code><code>作者:白</code>

<code>           </code><code>時間:2018年1月8日</code>

<code>           </code><code>功能: 生成随機4位驗證碼(必須由兩個2字母和2個數字組成)</code>

<code>import</code>  <code>random</code>

<code>def</code> <code>main():</code>

<code>    </code><code>list_num </code><code>=</code> <code>[</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>,</code><code>4</code><code>,</code><code>5</code><code>,</code><code>6</code><code>,</code><code>7</code><code>,</code><code>8</code><code>,</code><code>9</code><code>,</code><code>0</code><code>]</code>

<code>    </code><code>list_str </code><code>=</code> <code>[</code><code>'a'</code><code>,</code><code>'b'</code><code>,</code><code>'c'</code><code>,</code><code>'d'</code><code>,</code><code>'e'</code><code>,</code><code>'f'</code><code>,</code><code>'g'</code><code>,</code><code>'h'</code><code>,</code><code>'i'</code><code>,</code><code>'j'</code><code>,</code><code>'k'</code><code>,</code><code>'l'</code><code>,</code><code>'m'</code><code>,</code><code>'n'</code><code>,</code><code>'o'</code><code>,</code><code>'p'</code><code>,</code><code>'q'</code><code>,</code><code>'s'</code><code>,</code><code>'t'</code><code>,</code><code>'x'</code><code>,</code><code>'y'</code><code>,</code><code>'z'</code><code>]</code>

<code>    </code><code>veri_str </code><code>=</code> <code>random.sample(list_str,</code><code>2</code><code>)</code>

<code>    </code><code>veri_num </code><code>=</code> <code>random.sample(list_num,</code><code>2</code><code>)</code>

<code>    </code><code>veri_out </code><code>=</code> <code>random.sample(veri_num </code><code>+</code> <code>veri_str,</code><code>4</code><code>)</code>

<code>    </code><code>veri_res </code><code>=</code> <code>str</code><code>(veri_out[</code><code>0</code><code>]) </code><code>+</code> <code>str</code><code>(veri_out[</code><code>1</code><code>]) </code><code>+</code> <code>str</code><code>(veri_out[</code><code>2</code><code>]) </code><code>+</code> <code>str</code><code>(veri_out[</code><code>3</code><code>])</code>

<code>    </code><code>print</code><code>(veri_res)</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>main()</code>

這裡有兩個問題:

1、如何簡化list_str  生成一個a-z的清單,這裡我就用比較笨的方法一個一個列出來了

2、不知道python有沒有一鍵式的函數,生成驗證碼的那種

如知道以上兩個問題的,可以留言告訴我一下,不勝感激!~

對于上面的問題,經過昨天下午的測試和練習以不同函數分開的方法拼接而成,這樣友善後面對于不同子產品的使用。

版本二:

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<code>        </code><code>作者:白</code>

<code>        </code><code>日期:2018年1月8日</code>

<code>        </code><code>功能:利用random/chr()/ord()生成一個4位随機數(包含大小寫字母和數字)</code>

<code>chr(x)                 将一個整數轉換為一個字元</code>

<code>ord(x)                 将一個字元轉換為它的整數值</code>

<code>import</code> <code>random</code>

<code>veri_list </code><code>=</code> <code>[]</code>

<code>#通過chr()函數取随機大寫字母A-Z</code>

<code>def</code> <code>A_str():</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>4</code><code>):</code>

<code>        </code><code>veri_num1 </code><code>=</code> <code>random.randint(</code><code>65</code><code>,</code><code>90</code><code>)  </code><code>#取值65-90随機一個整數</code>

<code>        </code><code>veri_str1 </code><code>=</code> <code>chr</code><code>(veri_num1)</code>

<code>        </code><code>veri_list.append(veri_str1)</code>

<code>#通過chr()函數取随機小寫字母a-z</code>

<code>def</code> <code>a_str():</code>

<code>        </code><code>veri_num2 </code><code>=</code> <code>random.randint(</code><code>97</code><code>,</code><code>122</code><code>)  </code><code># 取值98-122随機一個整數</code>

<code>        </code><code>veri_str2 </code><code>=</code> <code>chr</code><code>(veri_num2)           </code><code># 轉換小寫字母a-z的随機</code>

<code>        </code><code>veri_list.append(veri_str2)</code>

<code>#通過chr()和ord()函數取随機數字0-9</code>

<code>def</code> <code>num_1():</code>

<code>        </code><code>veri_num3 </code><code>=</code> <code>random.randint(</code><code>48</code><code>,</code><code>57</code><code>)</code>

<code>        </code><code>veri_str3 </code><code>=</code> <code>chr</code><code>(veri_num3)</code>

<code>        </code><code>veri_list.append(veri_str3)</code>

<code>#執行主函數</code>

<code>    </code><code>A_str()</code>

<code>    </code><code>a_str()</code>

<code>    </code><code>num_1()</code>

<code>    </code><code>veri_res </code><code>=</code> <code>random.sample(veri_list,</code><code>4</code><code>)</code>

<code>    </code><code># print(veri_res)</code>

<code>    </code><code>print</code><code>(</code><code>str</code><code>(veri_res[</code><code>0</code><code>]) </code><code>+</code> <code>str</code><code>(veri_res[</code><code>1</code><code>]) </code><code>+</code> <code>str</code><code>(veri_res[</code><code>2</code><code>]) </code><code>+</code> <code>str</code><code>(veri_res[</code><code>3</code><code>]))</code>

<code></code>

本文轉自 yuri_cto 51CTO部落格,原文連結:http://blog.51cto.com/laobaiv1/2058595,如需轉載請自行聯系原作者