我正在为一个班级制作密码检查程序。该程序具有特定的密码要求,就像所有密码检查程序一样。我在那里进行了所有的错误检查,但它们都有效,但是如果程序遇到的字段不符合嵌套的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.")
有没有办法打印出遇到的每一个错误陈述?
答案 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)
您可以将它们附加到列表中,而不是打印错误。因此,在检查流程结束时,您将有一个空列表(如果一切顺利),或者遇到检查流遇到的所有错误