1. 程式人生 > >python生成6位包含數字和字母的密碼

python生成6位包含數字和字母的密碼

初學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