2017-05-09 5 views
0

Ich mache eine Groß-und Kleinschreibung Passwort-Programm in Python, in dem das Passwort muss einen Großbuchstaben, einen Kleinbuchstaben und muss mindestens 8 Zeichen. Hier ist der Code:Erstellen eines Passwort-Programms in 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 

Der Code ist nur ein Konzept jetzt, weshalb ich den Code geschrieben haben, für Großbuchstaben zu drucken. Meine Frage ist, wie bekomme ich das Programm, diese Anweisung nur einmal zu drucken, anstatt für jedes Zeichen zu drucken? (ZB "Up", "Up", "Up" usw.)

Antwort

-1

Legen Sie einfach eine break Anweisung nach print("Up"):

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

indent Fehler halten bekommen immer –

+2

Dies wird fehlschlagen Kleinbuchstaben erkennen, wenn eine nach dem kommen erster Großbuchstabe ... –

2

Da Sie eine Flagge sowieso sind einstellen, am Ende nur drucken, wenn die Flagge ist gesetzt.

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

Sie müssen einen Test machen nur die Aussage ‚Up‘ drucken, wenn Sie bereits zu sehen:

for char in password: 
    if char.isupper(): 
     upperFlag = True 
    else: 
     lowerFlag = True 
if upperFlag: 
    print("Up") 

Alternativ statt eine explizite Schleife, können Sie ein Verständnis, wie diese verwendet werden.

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

Und vergessen Sie nicht upperFlag auf False zu Beginn des Codes zu setzen oder Sie einen Nameerror

Verwandte Themen