簡體   English   中英

其他函數中的 Python 布爾檢查

[英]Python boolean check in other functions

這是我的密碼代碼,實際上我有 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

對於 True 情況,您需要為所有函數添加“返回”。

對於 True 情況,您只是將變量設置為 true。 但是,您不會返回它。

此外,沒有對所有字符進行全面檢查,因為您正在打破第一個成功案例的循環。 你需要用 continue 修改 break:

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

您的代碼還有其他一些問題,但是在回答您的問題時,您的函數 special_caracters(password) 在條件為 True 時不返回任何值。 嘗試重構一下:

def special_caracters (password):

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

    return False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM