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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值