小记一次考题:生成包含大写字母、小写字母、数字的8位密码

时间:2022-02-20 09:11:39

思路一:str=‘abcd.....xyz0123456789ABCD....XYZ’     

思路二:str1='abcd...'  str2='ABCD....XYZ'   str3='0123456789'

思路三:引入string    使用   string.ascii_lowercase 等

思路四:引入ASCII    使用随机以及正则      目前感觉是比较正确的    有待优化

 1 # -*- coding: utf-8 -*-
 2 # @Time    : 2018/10/8 16:24
 3 # @Author  : wangyafeng
 4 # @Email   : 279949848@qq.com
 5 # @Software: PyCharm
 6 
 7 
 8 import random,re
 9 
10 checkcode = ''
11 for i in range(8):
12     current = random.randrange(0,100)
13     # 字母
14     if current%2==0:
15         tmp=chr(random.randint(65,90))
16         checkcode += str(tmp)
17     elif current%3==0:
18         tmp=chr(random.randint(97,122))
19         checkcode += str(tmp)
20     #数字
21     else:
22         tmp=random.randint(0,9)
23         checkcode += str(tmp)
24 
25 # matchObj=re.match('^[A-Za-z0-9]{8}$',checkcode)
26 matchObj=re.match('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8}$',checkcode)
27 if matchObj:
28     print(checkcode)
29 else:
30     print("请重新生成")