前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python每日一谈|No.25.实例.6-Life.2-Python-生成密码

Python每日一谈|No.25.实例.6-Life.2-Python-生成密码

作者头像
DrugScience
发布2021-03-24 13:33:51
3430
发布2021-03-24 13:33:51
举报
文章被收录于专栏:DrugScience

简介:

起因,由于收到邮件需要修改密码

没得说,那就改

实例

使用random来生成随机密码,包含大写字母,小写字母,数字,特殊字符的密码

首先生成一个长度为15,包含大写字母,小写字母,数字,特殊字符的密码

代码语言:javascript
复制
In [1]: import random# 首先,创建几个字符串In [9]: a = "qwertyuiopasdfghjklzxcvbnm"
In [10]: b = a.upper()
In [11]: bOut[11]: 'QWERTYUIOPASDFGHJKLZXCVBNM'
In [12]: c ='0123456789'
In [13]: d ='~!@#$%^&*():?'

# 创建一个列表,包含15个元素In [14]: pw = [i for i in range(15)]
In [15]: pwOut[15]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]  
# 字符串组合为新列表In [20]: sec_list = [a,b,c,d]
In [21]: sec_listOut[21]:['qwertyuiopasdfghjklzxcvbnm', 'QWERTYUIOPASDFGHJKLZXCVBNM', '0123456789', '~!@#$%^&*():?'] # 随机选取字母替换列表# 首先,从sec_list中随机选择一个列表# 然后,从a,b,c,d中随机选择一个元素In [31]: for i in range(len(pw)):    ...:     pw[i] = str(random.choice(random.choice(sec_list)))In [32]: pwOut[32]: ['g', '6', '3', 'w', 'N', '4', 'd', '6', '9', '$', '6', '5', 'g', '1', '1']
# 但是这样潜在的可能是存在有大写字母,小写字母,特殊字符,数字缺少其中一个或者几个的状况# 虽然概率很低# 加一个判断条件In [43]: judge = []    ...: for i in pw:    ...:     if i in a:    ...:         judge.append('a')    ...:     elif i in b:    ...:         judge.append('b')    ...:     elif i in c:    ...:         judge.append('c')    ...:     elif i in d:    ...:         judge.append('d')
In [44]: judgeOut[44]: ['a', 'c', 'c', 'a', 'b', 'c', 'a', 'c', 'c', 'd', 'c', 'c', 'a', 'c', 'c']  # 然后我们将其转化为集合In [45]: judge_set = set(judge)In [46]: judge_setOut[46]: {'a', 'b', 'c', 'd'}  # 判断其长度,如果不为4,则抛弃,直到等于4出现In [47]: len(judge_set)Out[47]: 4  # 然后,列表转化为字符串In [38]: passwd = ''.join(pw)In [39]: passwdOut[39]: 'g63wN4d69$65g11'

整体代码

代码语言:javascript
复制
import randomdef get_passwd(num):    # 设置大写字母,小写字母,数字,特殊字符    a = 'qwertyuiopasdfghjklzxcvbnm'    b = 'QWERTYUIOPASDFGHJKLZXCVBNM'    c = '0123456789'    d = '~!@#$%^&*():?'    # 创建一个指定长度的列表,并随机替换其中元素    pw = [i for i in range(num)]    sec_list = [a,b,c,d]    for i in range(len(pw)):        pw[i] = str(random.choice(random.choice(sec_list)))    # 判断生成的列表中的字符都是属于什么类型    judge = []    for i in pw:        if i in a:            judge.append('a')        elif i in b:            judge.append('b')        elif i in c:            judge.append('c')        elif i in d:            judge.append('d')    # 如果全部包含4种类型,则输出为字符串    # 否则则重新开始    if len(set(judge)) == 4:        return ''.join(pw)    else:        get_passwd(num)

运行

代码语言:javascript
复制
In [8]: print(get_passwd(10))6@%7H&Dd7)In [9]: print(get_passwd(20))2(t#homPlo8WQ24KVD*nIn [10]: print(get_passwd(30))cDp53xNVsTUuz(Gz!jznwA7YQ58D3oIn [11]: print(get_passwd(40))#%85NW!n0@$u00?tZz%)!2$bf)(AkzT!w&^*Fokb

如果,密码和账号太多了,可以存在一个指定的文本中,然后给他上锁,下次需要的时候进行查看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FindKey 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档