yjptx121 发表于 2020-1-9 19:12:18

第十四课密码强度习题

本人比较愚钝,所以在这个题目上花了较多时间才理解透,根据鱼C大大的代码稍微改动了一下:
symbols = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUVwWXYZ'
again = 'y'
while again == 'y':
    password = input('请输入密码:')
    length = len(password)
    while(password.isspace() or length == 0):
      password = input('输入为空或未输入字符,请重新输入:')
    if length <= 8:
      flag_len = 1
    elif 8 < length < 16:
      flag_len = 2
    else:
      flag_len = 3
    flag_con = 0
    for i in password:
      if i in symbols:
            flag_con += 1#可否写成flag_con = 1,当然不行
            break
    for i in password:
      if i in chars:
            flag_con += 1 #可否写成flag_con = 1,当然不行
            break
    for i in password:
      if i in nums:
            flag_con += 1 #可否写成flag_con = 1,当然不行
            break
    while 1:
      print('您的密码安全级别评定为: ',end = '')
      if flag_len == 1 or flag_con == 1:
            print('低')
      elif flag_len == 2 or flag_con == 2:
            print('中')
      else:
            print('高')
            print('请继续保持')
            if password not in chars:
                print('遗憾的是密码第一个字符不为字母')
            break#如果没有break 则会进入死循环
            print('''请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字.字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于 16 位''')
            break   #如果没有break 则会进入死循环
    again = input("重新测试请按'y',退出请按其他键:")
print('测试结束!')

判断密码的第一个字符是否为字母,使用了.isalpha代码,这里犯了个低级错误
页: [1]
查看完整版本: 第十四课密码强度习题