2017-11-20 4 views
-2

パスワードの検証機能は、パスワードが3未満で長さが20より大きい場合、および両方のパスワードが一致しない場合はfalseを返します。なぜ私のロジックが失敗しているのか理解してくれて、私にこれをやるより良い方法を教えてくれますか?私はあなたのコードに最小の変更のように思えた簡単な方法があると確信しているもののPythonでのパスワードの確認機能

def verifyPassword(password, password2): 
    if(len(password) == len(password2): 
     if(len(password) and len(password2) >= 3: 
      if(len(password) and len(password2) < 20: 
       if password == password: 
        return True 
       else:     
        return False 
      else: 
       return False 
     else: 
      return False 
    else: 
     False 
print(verifyPassword("le3ather", "leather2")) 
print(verifyPassword("leather", "leather2")) 
print(verifyPassword("leather", "leather")) 
print(verifyPassword("le", "Le")) 
print(verifyPassword("leatherLeatherleather", "leatherLeatherleather")) 
+0

インデントがあなたのコードで明らかに間違っています。最初に修正してください。 – pscl

+0

コードはいつ失敗するのですか?どの場合? – Murmel

+0

'(パスワード==パスワード2)と(3 <= len(パスワード)<= 20)' – swenzel

答えて

-1

私はあなたが正確に狙っているか知っているが、ここで私はあなたのために作ったものではありません。 https://gist.github.com/dgsbicak/96517f33e516ca4438c6e252149b8cbc

def verifyPassword(password, password2): 
    count = 0 
    # Rule 1 
    pas = [password, password2] 
    for p in pas: 
     if len(p)<3: 
      print("Password length is shorter than 3") 
      break 
     elif len(p)>19: 
      print("Password length is longer than 19") 
      break 
     else: pass 


    if password==password2: 
     return "Password is correct" 
    else: 
     return "Password is not correct" 

print(verifyPassword("le3ather", "leather2")) 
print(verifyPassword("leather", "leather2")) 
print(verifyPassword("leather", "leather")) 
print(verifyPassword("le", "Le")) 
print(verifyPassword("leatherLeatherleather", "leatherLeatherleather")) 
+0

これは多くの役に立ちます。それはまさに私が期待したものです。私はそれがすべて間違っていると思っていたと思う。私はそれらを比較するために両方の文字列を新しいリストに入れることを決して考えなかった。助けてくれてありがとう – iyke

+0

あなたの歓迎ですが、この回答を参考にしていただければ幸いです。良い一日を過ごしてください。 –

+1

答えにコードを含める方が良いでしょう。リンクが破損することがあります。 – IanS

-1

この

if((len(password) == len(password2)) and (len(password) and len(password2)) >= 3 < 20): 

は、おそらくこの

if((len(password) == len(password2)) and (len(password) and len(password2)) >= 3 and (len(password) and len(password2)) < 20): 

でなければなりません。

+0

良い点...ありがとうございました – iyke

+0

@ScottHunterどうですか? – SuperStew

+0

@ScottHunter yeaそれはIpythonで期待通りに働いています – SuperStew

0
MINLEN = 3 
MAXLEN = 20 

def verifypassword(pw1, pw2): 
    if pw1 != pw2: 
     return False 
    if len(pw1) < MINLEN: 
     return False 
    if len(pw1) > MAXLEN: 
     return False 

    return True 


def test(): 
    tests = [ 
      ("le3ather", "leather2"), 
      ("leather", "leather2"), 
      ("leather", "leather"), 
      ("le", "le"), 
      ("thisiseverybittoolong", "thisiseverybittoolong"), 
    ] 
    for p1, p2 in tests: 
     print(p1, p2, verifypassword(p1, p2)) 


if __name__ == '__main__': 
    test() 
+0

ありがとう – iyke

関連する問題