检查密码是否至少包含两个大写字母和两个小写字母

时间:2019-11-24 14:50:05

标签: python python-3.x

要求是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)

2 个答案:

答案 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()))
相关问题