我正在使用Python构建密码验证器,我已经创建了一些规则,如长度,字母数字,大写字母等。我挂断的部分是我需要一个特定的特殊字符集来检查因为也是。我不确定我是否只有语法问题,或者如果我没有构建代码检查部分,但无论我输入什么,似乎总是将特殊字符标记为不在密码中,即使它们是。
我试图按如下方式调出特殊字符列表:
spec= "!@#$%&_="
对于我正在尝试的特殊字符检查,执行工作的部分是针对每个项目(如上所述)的一系列验证检查:
elif not any(s in spec for char in s):
print ("Password must contain a special character of !@#$%&_=")
程序会运行,但即使使用应该通过的有效密码,也会点击特殊字符打印语句。我相信我会挂在elif +任何语句中,并且语法已关闭。
注意:我想避免使用正则表达式,并使用指定的特殊字符列表。
提前谢谢!
答案 0 :(得分:1)
修复您将any(s in spec for char in s)
替换为any(char in spec for char in s)
。
要检查密码是否至少包含特殊字符,请执行以下操作:
special_character = "!@#$%&_="
def is_valid(pwd):
global special_character
return any(char in spec for char in pwd)
def is_valid_other_method(pwd):
global special_character
return len(set(special_character).intersection(set(pwd))) > 0
print(is_valid('qwerty!'))
# True
print(is_valid('qwerty'))
# False
输出:
True
False
答案 1 :(得分:0)
你走在正确的轨道上。但是,您需要实现最后一个函数。这是您需要的所有代码。
word = "!@#$%&&^&*"
def true(pwd))
global character
return any(char in spec for char in pwd)
def otherthingsthatstrue(pwd):
global character
return len(set(character).intersection(set(pwd))) > 0
print(true('word!')
print(otherthingsthatstrue('word'))