2016-04-03 30 views
0

問題は次のとおりです。文字列が有効なパスワードかどうかをチェックする関数を作成します。Python 3-パスワードチェック

ルール:私はCountsDigitsFor DEFとのトラブルを抱えています少なくとも2桁

が含まれている必要があり、少なくとも8文字のパスワードのみ文字と数字のパスワードを構成する必要があります持っている必要があり、私はそれは、少なくとも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

なぜ、この1つだけを使用していない:

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

私はあなたの他の質問には上記を提供してきたが、ちょうど明確ではなかった場合には、私はするつもりですこれがどのように機能するかについて簡単に説明します。

上記は、1行で1行になります。アイデアは、パスワードの文字をループし、文字が数字かどうかを確認してから、パスワードの数字の合計を取得するというものです。

CountDigitsFor()に電話をした後、パスワードにの数字がになります。あなたが入力したif文で少なくとも2かどうかを確認できます。

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

私の教授は彼女がまだ終わっていないものを使うことについて肛門です! –