|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Lnan95 于 2016-1-20 17:25 编辑
14课的课后题有一个密码锁强度的习题折腾了一个晚上,实在想不出来,只好来论坛上求助了
感觉习题的答案有一些不足,比如输入两次空格或按两次回车一样能输入方程,没有过滤中文字符等等,强迫症简直不能忍啊!但是小弟我怎么也没能把这两个地方给修正,好不容易修正了错误(代码中圈红处一直在修改),数据又一直在第一个while里面不出来,头都大了。。
大家做while或for循环时候是怎么不把自己绕晕的呢
代码如下:
print("-------------------密码安全性检验器-------------------")
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
pwtext = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'''
password = input("请输入您的密码:")
length = 0
fe = 0
#回车检验
while True:
if len(password) == 0:
password = input("您的输入有误,请输入:")
else:
for i in password:
test1 = pwtext.find(i)
if test1 < 0:
print(r"""字符输入仅限英文字符!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>""")
password = input("请再输入您的密码:")
continue
else:
continue
break
print("输入格式正确!")
#密码安全性检验1
if password.isdigit() or password.isalpha() or len(password) <= 8:
sa = 0
elif 16 >= len(password) > 8:
sa = 1
elif len(password) > 16:
sa = 2
#密码安全性检验2
if not (password.isdigit() or password.isalpha()):
fe += 1
while not (password.isdigit() or password.isalpha()):
for i in password:
test1 = symbols.find(i)
if test1 >= 0:
fe += 1
break
break
safe = sa + fe
if sa==0 :
print("密码安全系数为:低级\n提示:当前安全系数较低,提高密码复杂度即可提高安全系数")
elif safe >= 1 or safe <= 2:
print("密码安全系数为:中级\n提示:提高密码复杂度即可提高安全系数")
elif safe == 4:
print("密码安全系数为:高级\n提示:请继续保持")
|
|