要求为2,但结果为6。如何解决该问题?
def is_password_valid(password):
requirements = 0
upper_case = []
for j in password:
if j.isupper():
upper_case.append(j)
if len(upper_case) > 1:
requirements += 1
lower_case = []
for j in password:
if j.islower():
lower_case.append(j)
if len(lower_case) > 1:
requirements += 1
print(requirements)
password = 'PAssword1$'
is_password_valid(password)
您的需求之所以达到6的原因是您设置循环的方式。第二次您的大写循环将添加一个。第二次到第六次,因为每次循环运行时,lower_case的长度都大于1。
您可以对其进行更改,以便通过在您的要求+ = 1语句之后添加一个break语句来使其中断。
您也可以这样使用正则表达式:
import re
pattern = re.compile("[A-Z]{2,}[a-z]{2,}")
string = "PAssword"
if pattern.match(string):
print("Password meets requirements!")
else:
print("Password does not meet requirements!")
我对regex并不是最好的选择,但这可以满足您两个大写和两个小写的要求。希望对您有帮助!