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

问题描述 投票:0回答:1

要求为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)
python python-3.x
1个回答
0
投票

您的需求之所以达到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并不是最好的选择,但这可以满足您两个大写和两个小写的要求。希望对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.