2016-03-25 24 views
0

Kodum var ve neredeyse bir programın içinde bir sembol var ise programın geçersiz bir şifre olduğunu söylemem gerekiyor. . . .Python'da şifre kontrolü

password = input("Enter password to test: ") 

caps = sum(1 for c in password if c.isupper()) 
lower = sum(1 for c in password if c.islower()) 
nums = sum(1 for c in password if c.isnumeric()) 

r = [caps, lower, nums] 

if len(password) < 8: 
    if caps >= 1: 
     if lower >= 1: 
      if nums >= 1: 
       print("Valid Passeord") 
      elif nums < 1: 
       print("Invalid password") 
     elif lower < 1: 
      print("Invalid password") 
    elif caps < 1: 
     print("Invalid password") 

Ve sadece ek bir bonus için, kendi şifresi ve geçersiz şifresiyle nasıl yeniden çalışabilirim?

password = input("Enter password to test: ") 

caps = sum(1 for c in password if c.isupper()) 
lower = sum(1 for c in password if c.islower()) 
nums = sum(1 for c in password if c.isnumeric()) 

r = [caps, lower, nums] 

if not password.isalnum(): # use .isalpha() if you don't want digits in your password 
    print("Invalid password") 
    if len(password) < 8: 
     if caps >= 1: 
      if lower >= 1: 
       if nums >= 1: 
        print("Valid password") 
       elif nums < 1: 
        print("Invalid password") 
      elif lower < 1: 
       print("Invalid password") 
     elif caps < 1: 
      print("Invalid password") 
+1

Kodun şu anda yaptıklarını eklemek faydalı olabilir. Beklediğiniz gibi davranmıyor mu? – chsbellboy

+1

İdeal olarak, tüm şifrelerinizi tek bir şifreleme yapmış olmanız gerekir… “sha1” kullanarak ve “hexdigest” ile karşılaştırın. Bütün problemlerinizi çözebilirsiniz! – NoobEditor

cevap

2

Simge, harfler ve sayılar dışında bir şey ifade ettiğinizi varsayar mıyım?

# Initialize our valid flag 
valid = False 

while not valid: 
    # Grab password and count everything as your original code 
    password = input("Please enter password: ") 
    caps = sum(1 for c in password if c.isupper()) 
    lower = sum(1 for c in password if c.islower()) 
    nums = sum(1 for c in password if c.isnumeric()) 

    # If password is not alphanumeric (contains symbols) or shorter than 8 characters, it's not valid 
    if not password.isalnum() or len(password) < 8: 
     valid = False 

    # Otherwise, the password is only valid if everything occurs at least once 
    else: 
     valid = all(x >= 1 for x in (caps, lower, nums)) 

    # Check if your password is valid, and if it is, print valid and break out of the loop 
    if valid: 
     print("Valid Password") 
     break 
    # Otherwise, print invalid and the loop goes on 
    else: 
     print("Invalid Password") 
+0

Bunu yaptım ve şimdi sadece "parola" girersem hiçbir şey sormaz bu benim –

+0

@MosesSaygbe'm var. Düzenlenmiş cevabım – Bahrom

+0

benim 8 karakterli, yalnızca rakam ve harflerin 1 rakamına sahip olması gerekmiyor. sembolleri iyi –