2017-10-19 15 views
1
while True: 
    password=input("Enter a password. Make sure it:\nContains at least 1 capital letter\nContains at least 6 letters\n") 
    time.sleep(0.35) 
    if len(password)>5 and password.islower=="False": 
     break 

これをどのように停止しますか?大文字が1文字で6文字より長い場合は停止したい。なぜこのループは止まっていませんか?

+1

'password.islowerを==」 False "' - > 'not password.islower()' – Dabiuteef

+1

'islower'はTrue/False値を返すメソッドです。あなたは 'password.islower()is False'を実行する必要があります。 – Wondercricket

+1

または' not password.islower() ' – Duncan

答えて

-1

islowerはプロパティではなく、むしろ関数です。代わりにこれを試してみてください。また

not password.islower() 

、@Danで述べたように、あなたは文字列"False"islower()機能(ブール値)の結果を比較します。 Pythonでは、真偽結果は文字列"False"(これは間違っています)またはブール値False(これは奇妙で危険です)と比較せずに、上記のように直接使用することができます。パスワードに大文字のが含まれている場合、islower()==FalseTrueになります。

+0

'' False "!= False'(これはOPの問題のすべてを修正しません) – Dan

+0

@Dan Oh、最初のエラーでOPコードをコンパイルするのをやめました:) –

1
if len(password)>5 and not password.islower(): 

または

if len(password)>5 and password.islower() == False: 

働くだろう。ここで

+0

いいえ、それはありません。 'islower'は関数です。 – Dan

+0

islowerが関数であるように、角括弧を追加しました。 – mrCarnivore

+0

かっこ!=かっこ:P(コードは正しい; DVは削除された) – Dan

5

password.islower=="False" 

まず、あなたは、メソッドを呼び出していない - あなたは括弧を追加する必要があります - あなたは、文字列での方法を比較します。あなたは、文字列とブール値を比較してしまう

password.islower() == "False" 

:あなたはこの問題を解決たらそれは、その後...

真になることはありません。それはどちらかの真になることはありません、あなたはブールFalse(引用符なし)と比較したい:最後の注意点としては

password.islower() == False 

、これは通常綴られる:

not passsword.islower() 
+0

これはなぜDVだったのか分かりませんが、それは正解であり、OPの問題(少なくとも表示されている問題)のすべてを解決する唯一の答えです。 – Dan

+0

@ダンは、「6より長い」と言った場所以外のすべての問題に対処してから、「> 5」をテストします。 – Duncan

+0

@ダンカンそれはそう言わない。それは "少なくとも6"であり、その場合には "> 5"で十分である。 – Dan