|
2鱼币
其实我觉得小甲鱼这个题目还是有漏洞的(他自己也说了有民愤)。
# 密码安全性检查代码
#
# 低级密码要求:
# 1. 密码由单纯的数字或字母组成
# 2. 密码长度小于等于8位
#
# 中级密码要求:
# 1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
# 2. 密码长度不能低于8位
#
# 高级密码要求:
# 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
# 2. 密码只能由字母开头
# 3. 密码长度不能低于16位
我审题吧,按照他的说法,无论是高中低级的几个限制条件应该是and的关系啊,但是在他的程序中却又出现了or的关系。# 打印结果
while 1 :
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1 :
print("低")
elif flag_len == 3 and flag_con == 3 and (passwd[0] in chars):
print("高")
print("请继续保持")
break
else:
print("中")
如果硬要按照and 的关系那么123456789和123456789101112314s'这个输入,其实都不可行‘’,但是我仍然认为每个等级的限制条件是并存的!
不知道我举例子对不对,就像是说:一线城市的条件是面积xxx人口xxx经济xxx,这样的话所有的城市也都是按照这个条件来套啊,如果有偏科的(比如经济好可以当一线人口少的只能当二线)情况存在,这个分类方法就失效了,所以应该有其他的评估办法。可是尽管如此,这种评估不失为一种好的方法,但是按照前述的城市等级分类确实是没法子处理我说的这种偏科条件,如果我要自行决定是and还是or的话,那么可能每个人都又不同的答案。
所以我认为这个题目还是有纰漏的。
扯远了,所以各位怎么看这个密码等级的条件是and还是or?
这是我的自己的代码
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
tip = "请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位"
passwd= input('请输入需要检查的密码组合:')
# 判断首字符是否为字母
cd1 = (65 <= ord(passwd[0]) <= 90) or (97 <= ord(passwd[0]) <= 122)
# 判断长度
cd2 = len(passwd)
# 判断成分
n,c,s = 0,0,0
for each in passwd:
if each in nums:
n = 1
elif each in chars:
c = 1
elif each in symbols:
s = 1
if (n,c,s)== (1,0,0) or (n,c,s)==(0,1,0 ):
cd3 = 1
elif (n,c,s)== (1,1,0) or (n,c,s)==(1,0,1) or (n,c,s)==(0,1,1):
cd3 = 2
elif (n,c,s)== (1,1,1):
cd3 = 3
# 给出评估
if (0 <= cd2 <= 8) or (cd3 == 1 ):
print('密码强度为低级',tip,sep='\n')
elif (8 <= cd2 <= 16) or (cd3 == 2 ):
print('密码强度为中级',tip,sep='\n')
elif (cd2 >= 16) and (cd3 == 3 ) and (cd1 ==True):
print('密码强度为高级')
我只是尽量满足可行性和面型过程的编程思路。
|
最佳答案
查看完整内容
or是满足任意条件为低级
高级密码全都是and
|