16

誰かが文字列をテストする方法についてアイデアを与えることができます:

  • 少なくとも 1 つの大文字を含む
  • 少なくとも 1 つの小文字を含む
  • 少なくとも 1 つの数字を含む
  • 最小長は 7 文字です
4

2 に答える 2

67
if (any(x.isupper() for x in s) and any(x.islower() for x in s) 
    and any(x.isdigit() for x in s) and len(s) >= 7):

別の方法は、ルールを (ラムダ) 関数のリストとして表現することです

rules = [lambda s: any(x.isupper() for x in s), # must have at least one uppercase
        lambda s: any(x.islower() for x in s),  # must have at least one lowercase
        lambda s: any(x.isdigit() for x in s),  # must have at least one digit
        lambda s: len(s) >= 7                   # must be at least 7 characters
        ]

if all(rule(s) for rule in rules):
    ...

あなたのコメントについて。エラー メッセージを作成するには

errors = []
if not any(x.isupper() for x in password):
    errors.append('Your password needs at least 1 capital.')
if not any(x.islower() for x in password):
    errors.append(...)
...

if errors:
    print " ".join(errors)
于 2013-06-17T04:34:22.053 に答える