2016-04-03 752 views
0

這裏是問題:編寫一個函數,檢查字符串是否有效的密碼。Python 3密碼檢查

規則:必須有至少8個字符的密碼必須只能由字母和數字組成的密碼必須包含至少2位

我有高清CountsDigitsFor麻煩的,我想它來檢查至少2數字。

def getPassword(): 
    return input("Enter password: ") 

def CountDigitsFor(password): 
    res = [] 
    for i in password: 
     if i.isdigit(): 
      res.append(i) 
    return int 

def validPassword(password): 
    if len(password) >= 8: 
     if password.isalnum(): 
     if CountDigitsFor(password) >= 2: 
      return True 
    else: 
     return False 

def main(): 
    password = getPassword() 
    if validPassword(password): 
     print(password + " is valid") 
    else: 
     print(password + " is invalid") 

main() 
+2

'return int'沒有意義。用'return len(res)'替換它。 – vaultah

回答

1
return int 

只是返回類int。你想返回的是數字的數量。當然,這將是:

return len(res) 
0

爲什麼不直接用這一個:

def CountDigitsFor(password): 
    return sum(character.isdigit() for character in password) 

我所提供的上述您的其他問題,但只是說不清楚,我要案件給你一個關於這是如何工作的簡要說明。

以上相當於你想要的,但在一個單一的行。這個想法是,你循環訪問密碼的字符,檢查字符是否是一個數字,然後得到密碼中數字的總和。

你打電話再經過CountDigitsFor()你會得到數的密碼位數,您可以檢查它們是否至少2您提供的if語句。

if CountDigitsFor(password) >= 2: 
      return True 
+0

我的教授是關於使用她還沒有結束的東西的肛門! –