Python布尔签入其他函数

2024-04-16 15:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码,我实际上有4个条件。然后,我在最后用def final\u password检查,如果前面的4个函数都为真,那么密码为真,否则为假。然而,最后一个没有工作,在我的测试过程中,它总是假的,即使当4个条件是真的。谢谢您!你知道吗

NON_ALPHABETIC_CARACTERS = ("!", "?", "§")

def password_len (password) :
    lenght_caracters_check = False

    for i in password :
        if len(password) > 4 and len(password) < 10 :
            lenght_caracters_check = True
            break
        else :
            return lenght_caracters_check 



def password_numeric_caracters (password) :
    numeric_caracters_check = False

    for i in password :
        if i.isnumeric () :
            numeric_caracters_check = True
            break
        else :
            return numeric_caracters_check



def password_alphabetic_caracters (password) :
    alphabetic_caracters_check = False

    for i in password :
        if i.isalpha () :
            alphabetic_caracters_check = True
            break
        else :
            return alphabetic_caracters_check 



def special_caracters (password) :
    special_caracters_check = False

    for i in password :
        if i in NON_ALPHABETIC_CARACTERS :
            special_caracters_check = True
            break
        else :
            return special_caracters_check 

def final_password (password) :
    final_password_check = False
    if password_len(password) and password_numeric_caracters(password) and password_alphabetic_caracters(password) and password_special_caracters(password)  :
        final_password_check  = True
    return final_password_check

Tags: infalsetrueforlenreturnifdef
2条回答

您的代码还有其他一些问题,但是回答您的问题时,如果条件为真,则函数的特殊字符(密码)不会返回任何值。试着重构一下:

def special_caracters (password):

    for i in password:
        if i in NON_ALPHABETIC_CARACTERS:
            return True

    return False

对于真实情况,您需要向所有函数添加“return”。你知道吗

对于真的情况,您只需将变量设置为真。但是你不能退。你知道吗

此外,没有对所有字符进行全面检查,因为您正在打破第一个成功案例的循环。您需要用continue修改break:

   for i in password :
        if i.isalpha () :
              continue
        else :
              return False
   return True  

相关问题 更多 >