2016-04-25 6 views

Antwort

1

Eine sehr einfache Lösung wäre diese:

def password_check(pw): 
    if len(pw) < 2: 
     print ('Password must be at least 2 characters long') 
     return False 
    elif pw.isalpha(): 
     print('Password must contain at least one number.') 
     return False 
    elif pw.isdigit(): 
     print('Password must contain at least one letter. ') 
     return False 
    for a in pw: 
     if a * 2 in pw: 
      print('Password contains a consecutive character') 
      return False 
    print('Password was accepted') 
    return True 

einfach überprüfen, ob alle Zeichen denen erscheint im Passwort ist zweimal hintereinander vorhanden.

0

Verwenden Sie ein groupby:

from itertools import groupby 

def password_check(pw): 
    if not pw: 
     print('Please enter a password') 
    elif pw.isalpha(): 
     print('Password must contain at least one number.') 
    elif pw.isdigit(): 
     print('Password must contain at least one letter. ') 
    elif any((len(list(vals)) > 1) for (char, vals) in groupby(pw)): 
     print('Password cannot contain duplicate characters. ') 
    else: 
     print('True') 


pw = input('Enter new password: ') 
password_check(pw) # Call your function 
+0

Danke! Hatte nur eine andere Frage. Ich habe vergessen, die Eingabe() am Ende des Zeilencodes hinzuzufügen und es wird nicht gedruckt. Wohin soll ich es bewegen? Ich habe es nur zum obigen Code hinzugefügt. –

+0

@Regis_ siehe bearbeitete Antwort – Bahrom

+1

würde dieser Code kein gültiges Passwort wie 'abac1234' ablehnen, weil 'a' zweimal erscheint, obwohl es sich nicht wiederholt? –

Verwandte Themen