密码检查程序

时间:2015-03-04 12:41:15

标签: python-3.x

我正在为一个班级制作密码检查程序。该程序具有特定的密码要求,就像所有密码检查程序一样。我在那里进行了所有的错误检查,但它们都有效,但是如果程序遇到的字段不符合嵌套的if-else语句中的要求,它会忽略每个if和else之后并且不会打印出错误遭遇。

minlength = (8)
valid = False
pw = str(input("Insert new password."))
num = sum(1 for c in pw if c.isnumeric())
alpha = sum(1 for c in pw if c.isalpha())
if len(pw) >= minlength:
    valid = True
    print(valid)
    if pw.isalnum():
        valid = True
        print(valid)
        if num >= 1:
            valid = True
            print(valid)
            if alpha >= 1:
                valid = True
                print(valid)
                if valid == True:
                    print("Your new password is valid.")
                else:
                    print("Your new password is not valid.")
            else: 
                valid = False
                print(valid)
                print("Error, password must contain at least one letter.")
        else:
            valid= False
            print(valid)
            print("Error, password must contain at least one number.")          
    else: 
        valid = False
        print(valid)
        print("Error, password is not alphanumeric.")
else:
    valid = False
    print(valid)
    print("Error, password is less than",minlength,"characters.") 

有没有办法打印出遇到的每一个错误陈述?

2 个答案:

答案 0 :(得分:0)

只需列出错误列表:errors = list()

不要嵌套if块。

每次遇到错误都会将其添加到错误列表中:errors.append(error)

在最后检查是否len(errors) == 0。这意味着密码正常。否则打印错误:

for err in errors: 
  print err

示例:

errors = list()
if len(pw) < minlength:
  errors.append('Not enough characters')
if alpha < 1:
  errors.append('At least a number is required')
if not errors:
  print 'Password is valid'
else:
  print 'Password is not valid'
  for err in errors:
    print err

答案 1 :(得分:0)

您可以将它们附加到列表中,而不是打印错误。因此,在检查流程结束时,您将有一个空列表(如果一切顺利),或者遇到检查流遇到的所有错误