文字列に繰り返し文字をチェックする関数を書こうとしていますが、繰り返しが見つかるとfalseを出力します。 'hello16'や 'secret77'のようなものは、無効なパスワードになります。文字列の繰り返し文字を検索するにはどうすればよいですか?
私がこれまで持って何
文字列に繰り返し文字をチェックする関数を書こうとしていますが、繰り返しが見つかるとfalseを出力します。 'hello16'や 'secret77'のようなものは、無効なパスワードになります。文字列の繰り返し文字を検索するにはどうすればよいですか?
私がこれまで持って何
非常に簡単な解決策はこの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回連続して存在する。
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
ありがとう!ちょうど別の質問があった。私は行のコードの下にinput()を追加するのを忘れてしまい、印刷されません。どこに移動すればいいですか?私はちょうど上記のコードに追加しました。 –
@Regis_編集された回答を参照 – Bahrom
'abac1234'のような正当なパスワードを拒否しないでください。 –
これまでに何を試みていないのですか?質問の一部としてコードを投稿できますか? – ManoDestra