思路一: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("请重新生成")
今天彻底解决这个问题 ,尚待代码继续优化,但是终归是解决了 这个思路还是比较简单的
1 import random 2 listc=[] 3 listd=[] 4 liste=[] 5 for i in range(65,91): 6 listc.append(chr(i)) 7 for j in range(97,123): 8 listd.append(chr(j)) 9 for k in range(48,58): 10 liste.append(chr(k)) 11 12 while True: 13 a=random.randint(1,6) 14 if 6-a>1: 15 b=random.randint(1,6-a) 16 else: 17 b=random.randint(1,1) 18 if 6-a-b>1: 19 c=random.randint(1,6-a-b) 20 else: 21 c=random.randint(1,1) 22 23 chart=random.sample(listc,a)+random.sample(listd,b)+random.sample(liste,c) 24 chart=''.join(chart) 25 if len(chart) ==6: 26 print(chart) 27 break