如何在 python 中不使用正则表达式来检查字符串的要求?

How to check string for requirements WITHOUT regex in python?

我需要制作一个程序来检查具有以下要求的输入(密码):

  • at least 8 characters in length
  • contains at least one lowercase letter
  • contains at least one uppercase letter
  • contains at least one number

如果不满足任何要求,它应该 return false。

到目前为止,我已经针对第一个要求做了以下内容。

def check_password(pword):
   if len(pword) < 8:
       return False
   for i in pword:
       if pword[i].isUpper():
           print(True)
   return True

我不知道如何在不使用正则表达式的情况下实现其他要求。

您可以使用简单的 if 语句询问您想要什么,例如:

def check_password(pword):
    if not len(pword) >= 8:
        return False
    elif not any(char.islower() for char in pword):
        return False
    elif not any(char.isupper() for char in pword):
        return False
    elif not any(char.isdigit() for char in pword):
        return False
    else:
        return True

print(check_password(''))  # False
print(check_password('HELLOOOOOO'))  # False
print(check_password('abc12345'))  # False
print(check_password('Helllooooo'))  # False
print(check_password('Hello12345'))  # True

any 语句 returns True 如果你的字符串至少有一个匹配项,在这种情况下,要求一个大写、小写和数字字符。然后 all 语句 returns True 仅当所有条件都满足时。

def check_password(pword):
    return all([
        len(pword) >= 8,
        any(letter.isupper() for letter in pword),
        any(letter.islower() for letter in pword),
        any(letter.isdecimal() for letter in pword) 
    ])

check_password('a4R') # False
check_password('abcdefgh') # False
check_password('12345678') # False
check_password('ABCDEFGH') # False
check_password('abcDEFGH') # False
check_password('abc45678') # False
check_password('ABC45678') # False
check_password('abcDEF7')  # False
check_password('abcDEF78') # True
check_password('abc12345')  # False