[英]Python to write function that check dependencies on other functions
[英]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.