|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:
# 密码安全性检查代码
#
# 低级密码要求:
# 1. 密码由单纯的数字或字母组成
# 2. 密码长度小于等于8 位
#
# 中级密码要求:
# 1. 密码必须由数字、字母或特殊字符(仅限:`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>)任意两种组合
# 2. 密码长度不能低于8 位
#
# 高级密码要求:
# 1. 密码必须由数字、字母及特殊字符(仅限:
)三种组合
# 2. 密码只能由字母开头
# 3. 密码长度不能低于16 位
小甲鱼的答案:
# coding=utf-8
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input(' 请输入需要检查的密码组合:')
# 判断长度
length = len(passwd)
while (passwd.isspace() or length == 0):
passwd = input(" 您输入的密码为空(或空格),请重新输入: ")
if length <= 8:
flag_len = 1
elif 8 < length < 16:
flag_len = 2
else:
flag_len = 3
flag_con = 0
# 判断是否包含特殊字符
for each in passwd:
if each in symbols:
flag_con += 1
break
# 判断是否包含字母
for each in passwd:
if each in chars:
flag_con += 1
break
# 判断是否包含数字
for each in passwd:
if each in nums:
flag_con += 1
break
while 1:
print(" 您的密码安全级别评定为: ", end='')
if flag_len == 1 or flag_con == 1 :
print(" 低")
elif flag_len == 2 or flag_con == 2 :
print(" 中")
else:
print(" 高")
break
print(" 请按以下方式提升您的密码安全级别: \n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16 位'")
break
我的思路:让用户输入密码,然后依次判断等级是不是低,不是的话等级是不是中,否则为高
疑问:
1.没有看到密码只能由字母开头的判断啊?
2.运行了输入非字母开头结果,其余条件符合高的条件,评定结果为高,不是应该为中么?
3.如果要加入这个条件,该怎么修改?
4.最后一个最重要的思路问题,我看到这个题目以后,本身是做测试的,思路就是顺着题目写,大致就是让用户输入密码,然后依次判断等级是不是低,不是的话等级是不是中,否则为高 i 我是这么想的,但是还不会写,这样的思路能否实现并满足题目要求? ii 如果i不可取,是代码效率低,浪费效率资源了,还是什么原因,为什么不能按照i的思路写?小甲鱼的思路好在哪?
a = """~!@#$%^&*()_=-/,.?<>;:[]{}|\ """
def long(c):
if c <= 8:
return 0
elif c > 8:
if c >= 16:
return 2
else:
return 1
def num(b):
if b.isalpha() == 1or b.isdigit()== 1:
return 0
else:
x,y,z,e = 0,0,0,0
for i in b:
if i in a:
x = 1
elif i.isalpha() == 1:
y = 1
elif i.isdigit() == 1:
z =1
else:
e =1
if x+y+z == 1:
return 0
elif x+y+z == 2:
return 1
elif x+y+z == 3:
return 2
else:
return 3
b = input("请输入密码:")
c = len(b)
while True:
O = long(c) == 1 or long(c) == 2
p = long(c) == 2
q = num(b) != 0
n = num(b) == 2
m = num(b) == 3
if m:
print("密码中含非法字符")
b = input("请重新输入:")
c = len(b)
elif b[0].isalpha() == 1 and n and p:
print("安全等级高,请放心使用")
break
elif O and q:
print("安全等级中等")
break
else:
print("安全等级低,请慎重考虑")
break
这是我自制的密码判断 ,根据题目做的,之后看了小甲鱼的 ,我感觉小甲鱼的低中高判断很简洁,自制的就比较复杂 ,个人建议你先看题目,自己做一遍 ,做出了之后再去看答案,会给你很大提升。你直接看答案会完全没有自己的思路。最后说一下首字母判断,我自制的是有的,你可以参考一下
|
|