救救孩子,两天了
key=input('请输入需要检查的密码组合:')spkey=('~','`','!','@','#','$','%','^','&','*','(',')','_','-','=','+','{','}','[',']',':',';','<','>',',','.','/','?','\\','|')
isAright=False
isok=True
for i in spkey[:]:
for j in key[:]:
if j == i:
isAright=isok
a=key.isalpha()
d=key.isdecimal()
while a==False and d==False and len(key) >= 16 and (99<=ord(key)<=122 or 65<=ord(key)<=90):
print('您的密码安全级别评定为:高',
'\n','请继续保持')
break
else:
while a==False and d==False and len(key)>=8 or a==False and isAright==True and len(key)>=8 or d==False and isAright==True and len(key)>=8:
print('您的密码安全级别评定为:中',
'\n','请按照以下方式提升您的密码安全级别:',
'\n','\t','1.密码必须由数字、字母及特殊字符三者组合',
'\n','\t','2.密码只能由字母开头',
'\n','\t','3.密码长度不能低于16位')
key=input('请输入需要检查的密码组合:')
else:
while a==True and len(key) <= 8 or d==True and len(key) <= 8:
print('您的密码安全级别评定为:低',
'\n','请按照以下方式提升您的密码安全级别:',
'\n','\t','1.密码必须由数字、字母及特殊字符三者组合',
'\n','\t','2.密码只能由字母开头',
'\n','\t','3.密码长度不能低于16位')
key=input('请输入需要检查的密码组合:')
else:
while len(key)<8:
print('您的密码安全级别评定为:低',
'\n','请按照以下方式提升您的密码安全级别:',
'\n','\t','1.密码必须由数字、字母及特殊字符三者组合',
'\n','\t','2.密码只能由字母开头',
'\n','\t','3.密码长度不能低于16位')
key=input('请输入需要检查的密码组合:')
else:
print('您的密码安全级别评定为:低',
'\n','请按照以下方式提升您的密码安全级别:',
'\n','\t','1.密码必须由数字、字母及特殊字符三者组合',
'\n','\t','2.密码只能由字母开头',
'\n','\t','3.密码长度不能低于16位')
key=input('请输入需要检查的密码组合:')
以输入的内容看
a=key.isalpha()为False,不都是字母
d=key.isdecimal()为False,不是数字
a==False and d==False and len(key) >= 16 and (99<=ord(key)<=122 or 65<=ord(key)<=90)值为True,所以得到级别为高的不正确结论 本帖最后由 笨鸟学飞 于 2020-12-9 23:20 编辑
有几处错误,代码太长了懒得看了
1、while循环考虑不周到,要善用continue和break
2、while循环和input()函数没有结合考虑
3、算法考虑有失误的地方,既然考虑用while就应先分析是否低,再是否中,最后是否高
整体结构建议为:
while True:
password = input('请输入要检查的密码')
'''是否为-低-比较算法
是则continue执行下一次循环
否则继续'''
本帖最后由 jackz007 于 2020-12-10 01:14 编辑
给你来个跟小甲鱼完全不同的代码
mess = '''请按以下方式提升你的密码安全级别:
\t1.密码必须由数字、字母及特殊字符三种组合
\t2.密码只能由字母开头
\t3.密码长度不能低于16位'''
key = input('请输入需要检查的密码组合:') . strip()
spkey = r'~`!@#$%^&*()_-=+{}[]:;<>,./?\|'
a = sum(1 for x in key if x . isalpha()) # 字母计数
d = sum(1 for x in key if x . isdigit()) # 数字计数
s = sum(1 for x in key if x in spkey) # 符号计数
if key . isalpha and len(key) >= 16 and a > 0 and d > 0 and s > 0:
print('您的密码安全级别评定为:高')
print('请继续保持')
elif len(key) < 8 or len(key) == a or len(key) == d or len(key) == s:
print('您的密码安全级别评定为:低')
print(text)
else:
print('您的密码安全级别评定为:中')
print(mess)
页:
[1]