2016-12-15 12 views
-4

私は学校のためのパスワードプロジェクトを作っていましたが、私は1つの問題に立ち往生しました。ここではありえないが正常に動作するコードです:パスワードpythonプロジェクト番号

def passwordStrength(password): 
    if password.islower(): 
     print("Your password is weak as it only contains lower case letters") 
    elif password.isupper(): 
     print("Your password is weak as it only contains capital letters") 
    elif password.isnumeric(): 
     print("Your password is weak as it only contains numbers") 
    elif password.islower and password.isupper: 
     print("Your password is medium as it contains no numbers") 
    elif password.islower and password.isnumeric: 
     print("Your password is medium as it contains no uppercases") 
    elif password.isupper and password.isnumeric: 
     print("Your password is medium as it contains no lowercases") 
    elif password.islower and password.isupper and password.isnumeric: 
     print("Your password is strong") 

は、しかし、私は、このような「asasASAS1212」として、パスワードを入力すると、それはあなたのコードの最初の問題は、あなたが呼び出しされていないということです何の数字

+0

'islower'は関数であり、プロパティなどではありません。 – Sayse

+0

あなたは 'islower'と他の人を呼び出すことはありません –

+2

また、あなたのクラスメートに提案された重複[質問](http://stackoverflow.com/q/41117733/1324033)はさらに助けになるかもしれません – Sayse

答えて

3

が含まれていないと言いますメソッドそのもの。基本的には、islower、isupper、およびisnumericを参照するたびに大括弧(つまり、)を入れる必要があります。

さらに深刻な問題は、これらの方法の使用の背後にある意図にあります。関数islower、isupper、isnumericは意味的に "この文字列にはアルファベットの小文字があります"、 "この文字列には大文字のアルファベットが含まれています"、 "この文字列には数字があります"これらの関数は、文字列全体がであるかどうかをチェックします。その文字はです。

文字列に1桁の数字(たとえば「asd123」)がある場合、その文字列に小文字ではない文字があるため、islowerメソッドはfalseを返します。

非常に効率的ではなく、その問題の解決策は、文字列内の各文字を個別にチェックすることです。

+0

ありがとうございます:) – Cole

関連する問題