Überprüfen Sie jede Bedingung in Python if -, else-selbst wenn man die zu true ausgewertet wird
Gibt es eine Möglichkeit in Python, um mit der überprüfung fortzufahren Bedingungen eine if-else-Anweisung, wenn man zu true ausgewertet wird? Hier ist mein code:
status = True
if pass_len(S) == False:
print ('Password must be at least 6 characters long')
status = False
elif pass_upper(S) == False:
print('Password must include upper case letters')
status = False
elif pass_lower(S) == False:
print('Password must include lower case letters')
status = False
elif pass_nums(S) == False:
print('Password must include digits.')
status = False
else:
status = True
return status
Zum Beispiel, wenn das Passwort keine Großbuchstaben enthalten oder zahlen, würde ich gerne ausdrucken von Nachrichten, statt nur "Kennwort muss groß-Kleinschreibung" und es endet genau dort. Ich versuchte, um durch Rückkehr aus der einzelnen Anweisung, aber es hat nicht funktioniert. Jede Hilfe ist willkommen, danke.
- ja, loszuwerden, die elif...
- Sie nicht brauchen, die letzten
else: status = True
- Ah ja! Danke!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden
elif
mitif
wird sicherstellen, dass die überprüfung der Bedingung.elif
wird nur überprüft werden, wenn dieif
- Anweisung ausgewertetFalse
status = True
setzt den statusTrue
schon so einfachreturn status
keine Notwendigkeit für eineelse
finalflags = run_all_the_tests(0)
denen jeder test legt ein bit). Ich werde wahrscheinlich werfen etwas zusammen als eine übung in ein paar Stunden.Einen alternativen Weg, dies zu tun, dass ist ein wenig kürzer und gibt Ihnen auch eine Liste der Fehler ausgelöst wird eine Liste Verständnis:
RULES = [(pass_len, '...'), (pass_upper, '...'), ...]; errors = [message for test, message in RULES if not test(S)]
Stehlen Brutal von @JasonS ausgezeichnete Antwort, hier ist die bit-twiddling Ansatz, den ich erwähnt in einem Kommentar.
AUSGABE:
Können Sie TROCKNEN diese aus weiter, indem Sie:
__len__
Magische Methode definiert? Zum Beispiel eine Zahl. Oder in der Tat jedes Objekt, das für einige schlecht durchdachte Grund seiner__len__
Funktion gibt etwas, das ist noch nicht bestellbar, mit einer Nummer. Oder ich nehme an, wenn Sie werfen eine ebenso nicht zu bestellen-Nummer in derlength
kwarg ("Hello World" < [1,2,3,4]
wahrscheinlich wirft einenTypeError
)