luck78 发表于 2021-9-28 20:06:20

字符串 密码检测

symbol = r"""~!@#$%^&*()_=-/,.?<>;:[]{}|\"""

numbers='0123456789'
sum_ =0
warn = """
          请按以下方式提升您的密码安全级别:
                   1. 密码必须由数字、字母、及特殊字符三种组合
                   2. 密码只能由字母开头
                   3. 密码长度不能低于16位"""
while True:
    passwds = input('请输入需要检查密码组合:')


    if len(passwds) <= 8:
      print("您的密码安全级别评定为:低")
      print(warn)
      
    elif 16 >len(passwds) > 8:
      
      print("您的密码安全级别评定为:中")
      print(warn)

            
    elif len(passwds) > 16:
      #首字母判断
      if passwds.isalpha()==True:
            for i in range(1):
               
                for n in passwds:
                  if numbers.find(n) !=-1:
                        sum_ +=1
            for i in range(1):   
               for each in passwds:
                     if symbol.find(each)!=-1:
                        sum_ +=1
      if sum_==2:
            
            print("您的密码安全级别评定为:高")
            print("请继续保持")
      else:
            print("您的密码安全级别评定为:中")
            print(warn)


      
   
            
   
      


求教1.   这个程序在 if passwds.isalpha()==True: 的时候没有发挥作用,只在满足16位以上和特殊字符串后就判断了,我按数字开头也被安全等级也被评为高,怎么回事呢?明明应该先判断是否是字母开头后才对后面的步骤进行判断的
      2.   sum_ 想如果出现过数字和特殊符号就加一次 sum_==2的时候说明满足了3种组合都满足,但打印出sum_的总数是把密码里所有出现的数字和特殊符号都计算了一次
      怎么改才能按我的这个思路,把程序运行下去,谢谢

冬雪雪冬 发表于 2021-9-28 21:14:07

帮你修改了。
symbol = r"""~!@#$%^&*()_=-/,.?<>;:[]{}|\"""

numbers='0123456789'

warn = """
          请按以下方式提升您的密码安全级别:
                   1. 密码必须由数字、字母、及特殊字符三种组合
                   2. 密码只能由字母开头
                   3. 密码长度不能低于16位"""
while True:
    sum_ =0
    print(warn)
    passwds = input('请输入需要检查密码组合:')
    #首字母判断
    if passwds.isalpha()==True:

      if len(passwds) <= 8:
            print("您的密码安全级别评定为:低")
            
         
      elif len(passwds) < 16:
            
            print("您的密码安全级别评定为:中")


            
      else:

            for n in passwds:
                if numbers.find(n) !=-1:
                  sum_ +=1
                  break
            for each in passwds:
             if symbol.find(each)!=-1:
                sum_ +=1
                break
            if sum_==2:
               
                print("您的密码安全级别评定为:高")
                print("请继续保持")
            else:
                print("您的密码安全级别评定为:中")
    else:
      print('密码只能由字母开头')

luck78 发表于 2021-9-28 22:07:15

冬雪雪冬 发表于 2021-9-28 21:14
帮你修改了。

清晰了好多,谢谢
页: [1]
查看完整版本: 字符串 密码检测