2016-04-25 78 views
0

我想寫一個函數,檢查重複字符串中的字符,如果發現重複,則輸出false。像'hello16'或'secret77'就是無效的密碼。如何搜索字符串中重複的字符?

我有什麼到目前爲止

+0

到目前爲止,您嘗試過哪些方法無效?你可以發佈你的代碼作爲你的問題的一部分嗎? – ManoDestra

回答

1

一個非常簡單的解決辦法是這樣:

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 

簡單地檢查是否有任何字符,其出現在密碼中連續存在兩次。

0

使用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

謝謝!剛剛有另一個問題。我忘了在行代碼的底部添加input(),而不是打印。我應該把它移到哪裏?我只是將它添加到上面的代碼。 –

+0

@Regis_請參閱編輯答案 – Bahrom

+1

這段代碼是否會拒絕合法密碼,如'abac1234',因爲'a'出現兩次,雖然它不重複? –