silence_bla 发表于 2020-12-9 22:53:36

救救孩子,两天了

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('请输入需要检查的密码组合:')
            
            





冬雪雪冬 发表于 2020-12-9 23:07:28

以输入的内容看
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:14:53

本帖最后由 笨鸟学飞 于 2020-12-9 23:20 编辑

有几处错误,代码太长了懒得看了
1、while循环考虑不周到,要善用continue和break
2、while循环和input()函数没有结合考虑
3、算法考虑有失误的地方,既然考虑用while就应先分析是否低,再是否中,最后是否高

整体结构建议为:
while True:
   password = input('请输入要检查的密码')
   '''是否为-低-比较算法
      是则continue执行下一次循环
      否则继续'''
      

jackz007 发表于 2020-12-10 01:10:51

本帖最后由 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]
查看完整版本: 救救孩子,两天了