|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本人python小白,昨天尝试写一个检测密码复杂程度的脚本,其要求如下:
```python
# 密码安全性检查代码
#
# 低级密码要求:
# 1. 密码由单纯的数字或字母组成
# 2. 密码长度小于等于8位
#
# 中级密码要求:
# 1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
# 2. 密码长度不能低于8位
#
# 高级密码要求:
# 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
# 2. 密码只能由字母开头
# 3. 密码长度不能低于16位
```
我想用三个if语句去判断密码中是否分别含有数字,字母和特殊字符,因为还没有学习到正则表达式,我就想用简单的语法来实现这个功能(后来知道了用for循环较好),但是不明白我这个写的有哪里不对(没有大写字母和字母开头的检测,因为暂时想先试一下愈发的正确性):
```python
passwd = input('请输入密码:')
weichang = len(passwd)
lei = 0
num = 0
alp = 0
zif = 0
if '0' or '1' or '2'or '3' or '4' or '5' or '6' or '7' or '8' or '9' in passwd:
num = 1
else :
num = 0
if 'a' or 'b' or 'c' or 'd' or 'e' or'f'or 'g'or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z' in 'passwd':
alp = 1
else:
alp = 0
if '~' or '!' or '@' or '#' or '$' or '%' or '^' or '&' or '*'or '(' or ')' or '_' or '=' or '-' or '/' or ',' or '.' or '?' or '<' or '>' or ';' or ':' or '[' or ']' or '{' or '}' or '|' or '\\' in 'passwd':
zif = 1
else:
zif = 0
```
```python
lei = num + alp +zif
print(weichang,num,alp,zif,lei) #检测是哪一个数字计算错误
```
但是我检测了一下,发现无论密码是什么样的,num,alp,zif 这三个参数都为1,lei一直都是3,真的不太明白,请大神们指点一下,感谢!
你这个程序对应你的这个结果啊
if 语句的判断条件中有or和in两种运算符,但是or的优先级要比in低,所以会优先进行in运算,然后在进行or运算,所以不管你输入什么if的条件都为真,所以那三个参数都为1
你也不能吧这些or用括号括起来,那样相当于是if True in passwd 这样就永远为假了
若是你真打算这样写,那就是能是
if '0' in passwd or '1' in passwd or '2' in passwd or '3' in passwd or '4' in passwd ……
|
|