要求是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)
答案 0 :(得分:1)
您的需求之所以达到6的原因是您设置循环的方式。 第二次您的大写循环将添加一个。第二次到第六次,因为每次循环运行时,lower_case的长度都大于1。
您可以对其进行更改,以便在您的requirements += 1
语句之后添加一个break语句以使其中断。
您也可以像这样使用正则表达式:
import re
pattern = re.compile("(?=(.*[a-z]){2,})(?=(.*[A-Z]){2,})")
string = "pasSwSrd"
if pattern.match(string):
print("Password meets requirements!")
else:
print("Password does not meet requirements!")
答案 1 :(得分:0)
如果您采用简洁的方法,可能会发现以下帮助。
sum_of_ucase = sum(1 for c in password if c.isupper()))