2017-05-09 4 views
0

私は大文字と小文字を区別する必要があり、最小8文字でなければならない大文字と小文字を区別するパスワードプログラムを作成しています。ここでは、コードは次のとおりです。パスワードプログラムをPythonで作成する

password = input("Please enter a password:") 
upperFlag = False 
lowerFlag = False 
while len(password) < 8: 
    try: 
     password = input("Password not long enough") 
    except: 
     print("Error") 
for char in password: 
    if char == char.upper(): 
     upperFlag = True 
     print("Up") 

    elif char == char.lower(): 
     lowerFlag = True 

コードが今ちょうど概念である私は、大文字のために印刷するためのコードを書かれている理由、それはです。私の質問は、各文字を印刷する代わりに、このステートメントを1回だけ印刷するようにプログラムを設定する方法です。 (例えば、「アップ」、「アップ」など「アップ」)

答えて

-1

単にprint("Up")break文を挿入します。

password = input("Please enter a password:") 
upperFlag = False 
lowerFlag = False 
while len(password) < 8: 
    try: 
     password = input("Password not long enough") 
    except: 
     print("Error") 
for char in password: 
    if char == char.upper(): 
     upperFlag = True 
     print("Up") 
     break #<-- insert break here 

    elif char == char.lower(): 
     lowerFlag = True 
+0

はインデントエラーが発生してくださいますよ –

+2

いずれかが後に来る場合、これは小文字の検出に失敗します最初の大文字の1つ... –

2

あなたはとにかくフラグを設定しているので、場合だけで終わりに印刷しますフラグがセットされる。あなたはちょうどあなたがすでに「アップ」ステートメントを印刷するかどうかを確認するためにテストをしなければならない

if any(char.isupper() for char in password): 
    print("Up") 
0

代わりに明示的なループの代わりに
for char in password: 
    if char.isupper(): 
     upperFlag = True 
    else: 
     lowerFlag = True 
if upperFlag: 
    print("Up") 

、あなたはこのような理解を使用することができます。

if not upperFlag: 
    upperFlag = True 
    print('Up') 

そして、あなたのコードの開始時にFalseにupperFlagを設定するのを忘れていないか、またはあなたはNameError

関連する問題