我正在做一个密码检查,我已经指定用户只能使用这3个特殊字符($,&;,!) 特殊=['$','&;','!'] 但当我输入#时,输出仍然是真的 我试过用isdight和isalpha
if not any(char in special for char in password):
return ('False')
val = False
if not password.isdigit():
return('False')
val = False
if not password.isalpha():
return('False')
val = False
但是情况不同,当我指定3个特殊字符$,&;时;,!如果我键入其中一个字符,即$,输出仍然是False,与其他未批准的特殊字符相同,那么接下来该怎么办?你知道吗
这也可以通过正则表达式实现:
[A-Za-z0-9$&!]+
匹配A-Z范围内的任何大小写字符或任何数字或$
或&
或!
一次或多次。你知道吗$
匹配字符串的结尾(re.match
函数隐式匹配字符串的开头)。你知道吗代码:
印刷品:
如果你愿意
我想你希望你的代码看起来像这样:
我只是使用print语句,因为我不确定它是如何集成到现有代码中的。为了解释,您需要做的只是检查密码中的每个字符是否在您允许的特殊字符列表中。不需要多次检查。你知道吗
我假设您正在询问如何检查是否所有字符都是:
您的代码将分别检查这三个字符,这意味着您首先要测试所有字符是否都是特殊字符之一,然后测试所有字符是否都是普通字母,最后测试所有字符是否都是数字。当然,这种情况永远不会发生,因为数字不可能同时是字母和特殊字符。你知道吗
要解决这个问题,您需要使用
or
,它将检查您的任何条件是否为真。您还需要将not any(...)
更改为not all(...)
,这样当出现单个错误时,它将失败,而不仅仅是当所有字符都不满足我们的条件时。您可以使用str.isalnum()
将步骤2和3合并为一个步骤相关问题 更多 >
编程相关推荐