python生成6位包含數字和字母的密碼
阿新 • • 發佈:2019-02-09
初學python,簡單敲了幾行生成6位包含數字和字母密碼的程式碼
(我是在python 3上敲的)
首先理清思路:
1、包含數字和字母的六位口令共有36^6個
2、將0-9和a-z合成一個字串pwd,用pwd[0-35]表示所有數字和小寫字母,即
pwd[0]=0,pwd[1]=1…pwd[34]=y,pwd[35]=z
3、用0-36^6-1代表各個口令,
1->000001
2->000002
……
35->00000z
36->000010
……
36^6-1->zzzzzz
4、通過求模的方式從0到36^6-1得到36進位制數(類似十進位制,只不過逢36進一),
再通過36進位制數得到pwd中代表的字元
num/36=a…b
m=pwd[b] 右邊數第一個字元
num=a
依次迴圈6次,就可得到六位字元
舉例詳解:
取12345為例: 12345%36=33, pwd[33]='x', 12345//36=342
342%36=18, pwd[18]='i', 342//36=9
9%36=9, pwd[9]='9', 9//36=0
0%36=0, pwd[0]='0' 0//36=0
... pwd[0]='0' ...
... pwd[0]='0' ...
所以最終得到的字串為xi9000,逆序後得到0009ix
敲程式碼:
#共兩層迴圈
import string
pwd=string.digits+string.ascii_lowercase #string.digits就是0到9的數字,string.ascii_lowercase是小寫字母
for i in range(36**6):
pp=''
for j in range(6): #取六位,每取一次,迴圈一次
a=i%36 #取餘
pp=pp+pwd[a]
i=i//36 #'//'是取整,'/'會得到一個浮點數
if j==5:
print(pp[::-1]) #最先取到的字元反而是最低位(最右邊)的,所以字串逆序pp[::-1]
部分執行結果:
000000
000001
000002
000003
000004
000005
000006
000007
000008
000009
00000a
00000b
00000c
00000d
00000e
00000f
00000g
00000h
00000i
00000j
00000k
00000l