House password
StephanとSophiaはセキュリティを忘れて何にでも単純なパスワードを使います。 パスワードのセキュリティ検査モジュールを開発してNikolaを助けます。 十分強いと考えられるパスワードは長さが10文字以上です。 少なくとも一つ以上の数字、一つ以上の大文字、一つの以上の小文字を含みます。 パスワードはASCIIの英文字または数字のみを含んでいます。
入力: パスワード、文字列 (Unicode for Python 2.7)
出力: パスワードが安全かどうか、ブール値もしくはブール値に変換できるかブール値として処理できる任意のデータ型。 結果として変換された結果を見るでしょう。
Example:
checkio('A1213pokl') == False
checkio('bAse730onE') == True
checkio('asasasasasasasaas') == False
checkio('QWERTYqwerty') == False
checkio('123456123456') == False
checkio('QwErTy911poqqqq') == True
どのように使われるか: あなたのアプリケーションやサービスのセキュリティを気にするなら、あなたのユーザーのパスワードの複雑さを検査できます。 あなたは、あなたのユーザのパスワードがより多くの条件(記号やunicode)に合致するようにこれらのスキルを使うことがでます。
事前条件:
re.match("[a-zA-Z0-9]+", password)
0 < len(password) ≤ 64
def checkio(data): length = len(data) if length < 10: return False flag_digit = False flag_lower = False flag_upper = False for x in data: if x.isdigit(): flag_digit = True elif x.isupper(): flag_upper = True elif x.islower(): flag_lower = True if flag_digit and flag_upper and flag_lower: return True #replace this for solution return False
素直に、まず文字列の長さを調べて短過ぎたらFalseを返した。
あとは、今回初めて知ったけど数字があるかどうか、大文字か、小文字かを調べる便利なメソッドがpythonにはあるので(それぞれisdigit,isupper,islower)これを素直に使ってこれをすべて満たせばTrueを返してそうでなければFalseを返した。
他の人の答えはあとからみようっと。