2016-04-25 18 views
0

文字列に繰り返し文字をチェックする関数を書こうとしていますが、繰り返しが見つかるとfalseを出力します。 'hello16'や 'secret77'のようなものは、無効なパスワードになります。文字列の繰り返し文字を検索するにはどうすればよいですか?

私がこれまで持って何

+0

これまでに何を試みていないのですか?質問の一部としてコードを投稿できますか? – ManoDestra

答えて

1

非常に簡単な解決策はこの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 

あれば任意の文字がどの単にチェックパスワードに現れるのは2回連続して存在する。

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'のような正当なパスワードを拒否しないでください。 –

関連する問題