如何在 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
我需要制作一个程序来检查具有以下要求的输入(密码):
- 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