Napuleon 发表于 2017-10-16 16:40:07

关于课后题14讲 passwd级别的试验

因为密码初级,中级和高级一开始没有理解,我理解成了要对这三个级别进行检测的了,第一个就不说了,中级和高级我根据老师的答案进行的小改动。

中级: 只能3次尝试,超过次数结束
count = 3
str1 = 'Netgear_2'
symbols = r'''~!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
while count:
    flag_con = 0#这个要是放在while 以外,也就是放在上面会使循环有问题的#
    passwd = input("请输入密码: ")
    length = len(passwd)
    if passwd == str1:
      print('Yes, you get it')
      break
    elif length < 8:
      print('输入有误,输入密码长度不能超过8位,你还有', count-1, '次机会')
    else:
      for each in passwd:
            if each in symbols:
                flag_con += 1
                break
      for each in passwd:
            if each in chars:
                flag_con += 1
                break
      for each in passwd:
            if each in nums:
                flag_con += 1
                break
      if flag_con >= 2: #表示两两组合,三个当然也可以的#
            if passwd != str1:
                print('password input error, you have', count-1, '次机会')
      else:
            print('输入错误,请输入数字,字符串和特殊字符的两两组合', count-1, '次机会')
    count -= 1
if count == 0:
    print("已经超过3次,请稍后再试")

高级: 密码必须由特殊字符开始,为特殊字符,字母加数字的三种组合,其中字母包含大小写。

count = 3
str1 = 'Netgear_2'
symbols = r'''~!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
while count:
    flag_con = 0#这个要是放在while 以外,也就是放在上面会使循环有问题的#
    passwd = input("请输入密码: ")
    length = len(passwd)
    if passwd == str1:
      print('Yes, you get it')
      break
    elif length <= 3:
      print('输入有误,输入密码长度不能低于3位,你还有', count-1, '次机会')
    elif length > 7:
      print('输入有误,输入密码长度不能超过6位,你还有', count-1, '次机会')
    else:
      for each in passwd: #密码必须以特殊字符开头,否则会提示 A10 行的特殊信息
            if each not in symbols:
                print('输入错误,请输入以特殊字符开头的密码,密码为特殊字符,字母和数字的三种组合,你还有', count-1, '次机会')
                break
            else:
                for each in passwd:
                  if each in chars:
                        if not passwd.islower():
                            flag_con += 1
                            break
                        else:
                            print('输入错误,请输入数字,字符串和特殊字符的三种组合,其中字母请包含大小写,你还有', count-1, '次机会')
                            break
                break
                for each in passwd:
                  if each in nums:
                        flag_con += 1
                        break
                if flag_con >= 2: #表示三三组合#
                  if passwd != str1:
                        print('password input error, you have', count-1, '次机会')
                else:
                  print('输入错误,请输入数字,字符串和特殊字符的三种组合,你还有', count-1, '次机会')
                break#必须在这个地方加break,否则下面一行的else仍然会被检测到
    count -= 1
if count == 0:
    print("已经超过3次,请稍后再试")



本人完全新手,有写错还望指正,谢谢!

Napuleon 发表于 2017-10-19 09:37:15

自己顶下

dbpfjui 发表于 2017-11-13 08:28:13

好历害!我现在可以看的懂你的代码让我写呵呵
页: [1]
查看完整版本: 关于课后题14讲 passwd级别的试验