逆鳞丶樱之羽 发表于 2020-11-25 19:12:30

14讲动动手作业问题

本帖最后由 逆鳞丶樱之羽 于 2020-11-25 21:18 编辑

题目如下图
程序代码我已经写好了,我觉的思路没有问题(代码完全可以运行),只是存在个问题:
思路:通过集合的唯一性计算特殊符号的数量。
但当密码长度大于等于16时,我输入字母,数字和多个特殊字符组合,但并没有显示密码程度为高。
求解。
代码如下。
节点判断我已经写好了。
请告诉我思路或是否是程序问题等的错误,尽量不要改好写代码回复我。
要是还有什么问题,请回复我,不要帮我改好!(想锻炼思维),谢谢配合。
characters = ['~','!','@','#',','%','^','&','*','()','_','=','-','/',',','.','?','<>',';',':','[]','{}','|','\\']
active = True
while(active):
    password = input('请输入需要检查的密码组合:')
    length = len(password)
    couting = 0
    past_count = set()
    if password.count(' ') > 0:
      print('输入格式错误')
    else:
      if length <= 8:   
            print('''您的密码安全级别评定为:低
                  请按以下方式提升您的密码安全级别:
                              1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            print('assert length<8')
      elif password.isalnum():
            print('''您的密码安全级别评定为:低
                  请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            print('assert isalnum')
            
      elif 8 < length < 16:
            for ct in range(len(password)):
                if password in characters:
                  past_count.add(password)
            couting = len(past_count)
            print('assert 8 < length <16')
            if couting >= 2:
                print('''您的密码安全级别评定为:中
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            else:
                print('''您的密码安全级别评定为:低
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
      elif length >= 16:
            for ct in range(len(password)):
                if password in characters:
                  past_count.add(password)
            couting = len(past_count)
            print('assert length > 16')
            if couting >= 3:
                if password.istitle():
                  print('''您的密码安全级别评定为:高
                            请继续保持''')
                else:
                  print('''您的密码安全级别评定为:中
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            elif 2 <= couting < 3 :
                   print('''您的密码安全级别评定为:中
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            elif couting <= 1:
                  print('''您的密码安全级别评定为:低
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位''')
            else:
                  print('未知错误')
            

    guess = input('是否继续输入(y/n):')
    guess = guess.upper()
    if guess == 'Y':
      continue
    elif guess == 'N':
      break
    else:
      print('输入异常,强制退出')
      break
      

逃兵 发表于 2020-11-25 19:21:31

可以发一下大于16个字符的代码段吗?
请输入需要检查的密码组合:/*-/*-/*-/*-/*-/
assert length > 16
您的密码安全级别评定为:高                     请继续保持

逆鳞丶樱之羽 发表于 2020-11-25 19:27:02

逃兵 发表于 2020-11-25 19:21
可以发一下大于16个字符的代码段吗?

iwyui285278\ywytu.qytuq{}
这个

逃兵 发表于 2020-11-25 19:46:37

逆鳞丶樱之羽 发表于 2020-11-25 19:27
iwyui285278\ywytu.qytuq{}
这个

没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗{:10_277:}

逆鳞丶樱之羽 发表于 2020-11-25 21:13:12

逃兵 发表于 2020-11-25 19:46
没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗

好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。

逃兵 发表于 2020-11-26 08:17:12

逆鳞丶樱之羽 发表于 2020-11-25 21:13
好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。

想整简单点还是复杂点呢{:10_277:}
请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
assert length > 16
您的密码安全级别评定为:中
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位
是否继续输入(y/n):
输入异常,强制退出
>>> length
25
>>> couting
2

西瓜味的苹果 发表于 2020-11-26 09:17:17

可以用正则进行匹配

逆鳞丶樱之羽 发表于 2020-11-26 11:27:17

逃兵 发表于 2020-11-26 08:17
想整简单点还是复杂点呢

这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗?

逃兵 发表于 2020-11-26 12:37:35

逆鳞丶樱之羽 发表于 2020-11-26 11:27
这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗 ...

再给你点提示
请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
assert length > 16
您的密码安全级别评定为:中
                     请按以下方式提升您的密码安全级别:
                                 1.密码必须由数字、字母及特殊字符三种组合
                                 2.密码只能由字母开头
                                 3.密码长度不能低于16位
是否继续输入(y/n):
输入异常,强制退出
>>> past_count
{'.', '\\'}

逆鳞丶樱之羽 发表于 2020-11-26 12:44:24

逃兵 发表于 2020-11-26 12:37
再给你点提示

好的,我知道为什么了
页: [1]
查看完整版本: 14讲动动手作业问题