enter = input('请设置密码:')
if enter.isalpha() or enter.isdecimal(): #密码由单纯的数字 或者 单纯的字母组成
if len(enter) <= 8: #如果密码小于等于8位
print('密码强度:低')
else: #如果密码大于8位
print('检测到密码为纯字母或者纯数字组合,而且密码长度大于8位')
else: #如果密码不是由纯数字 或者 密码不是由纯字母组成
#使用for in的筛选方法,对每个元素判断,从三个元组中,分别是数字集合、字母集合、特殊符号集合
#列出数字、字母、特殊符号三个元组
#保留记录tuple1 = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
#tuple2 = ('0','1','2','3','4','5','6','7','8','9')
#tuple3 = ('~','!','@','#',','%','^','&','*','(',')','_','=','/',',','.','?','<','>',';',':','[',']','{','}','|','\\')
#上方根本不用每个元素都加单引号手动捂脸
tuple1 = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') #题目没有说大小写所以这个元组囊括了大写和小写字母
tuple2 = ('0123456789')
tuple3 = (r'~!@#$%^&*()_=/,.?<>;:[]{}|\\') #因为\放在字符串最后会报错,所以网上查到这种情况要放置偶数个\
count1 = 0 #如果不设置初始值都为0,那么当密码中没有字母时,下方语句if count1 + count2 + count3会报错,以此类推
count2 = 0
count3 = 0
for each in enter:
if each in tuple1:
count1 = 1 #统计密码中是否有字母 只要有字母即使最后一个字符不是字母,那么count1值也会为1(这句话为什么不是红色了)
if each in tuple2:
count2 = 1 #统计密码中是否有数字
if each in tuple3:
count3 = 1 #统计密码中是否有特殊符号
if count1 + count2 + count3 == 2: #如果密码有任意两种组合
if len(enter) >= 8: #如果密码长度大于等于8
print('密码强度:中')
else: #如果密码长度小于8
print('密码由数字、字母和特殊符号中的两种元素组成,而且密码长度小于8位')
if count1 + count2 + count3 == 3: #如果密码三种元素都包含
if enter[0] in tuple1: #如果密码首位为字母
if len(enter) >= 16: #如果密码长度大于等于16
print('密码强度:高')
else: #如果密码长度小于16位
print('密码由三种元素组成,密码强度小于16位')
else: #如果密码首位不是字母
print('密码由三种元素组成,而且密码首位不是字母')