Python布尔值检入其他功能

时间:2018-10-09 12:35:12

标签: python

这是我的密码代码,实际上我有4个条件。然后,我最后用def final_password进行了检查,如果之前的4个功能全部为TRUE,则密码为TRUE,否则为FALSE。但是,最后一个没有用,在我的测试过程中,即使4个条件为TRUE时,它始终为FALSE。谢谢!

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

2 个答案:

答案 0 :(得分:2)

对于True情况,您需要在所有功能中添加“ return”。

对于True情况,您只是将变量设置为true。但是,您不返回它。

此外,由于您要打破第一个成功案例的循环,因此不会对所有字符进行全面检查。您需要使用继续修改中断:

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

答案 1 :(得分:0)

您的代码还有其他问题,但是回答您的问题时,条件为True时,函数special_caracters(password)不会返回任何值。尝试重构一下:

def special_caracters (password):

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

    return False