|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 逗儿 于 2018-7-27 23:17 编辑
代码如下:
#密码安全性检查代码
#
#低级密码要求:
# 1.密码由单纯的数字或字母组成
# 2.密码长度小于等于8位
#
#中级密码要求:
# 1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)任意两种组合
#密码长度不能低于8位
#
#高级密码要求:
# 1.密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}\|)三种组合
# 2.密码只能由字母开头
# 3.密码长度不能低于16位
symbols = "~!@#$%^&*()_=-/,.?<>;:[]{}\|"
chars = 'adbcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = '0123456789'
t = 'yes'
while t == 'yes':
password = input("请输入需要检查的密码组合:")
length = len(password)
#判断密码长度
while(length == 0 or password.isspace()):
password == input("您输入的密码为空或为空格,请重新输入:")
length == len(password)
if length <= 8:
judge_len = 1
elif 8 < length < 16:
judge_len = 2
elif length >= 16:
judge_len = 3
judge_chars = 0
#判断是否包含特殊字符
for each in password:
if each in symbols:
judge_chars += 1
break
#判断是否包含字母
for each in password:
if each in chars:
judge_chars += 1
break
#判断是否包含数字
for each in password:
if each in numbers:
judge_chars += 1
break
#得出结果
while 1:
print("您的密码安全级别评定为:",end='')
if judge_len == 1 or judge_chars == 1:
print("低\n")
print("""请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位""")
elif judge_len == 2 or judge_chars == 2:
print("中\n")
print("""请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位""")
else:
print("高")
print("\n请继续保持")
break
t = input("还需要重新测试吗?(输入“yes”继续,其余退出)")
可以正常执行,但想问为什么break要在if里面,如果break和if对齐,不论输入什么密码安全性都为低,如果break和for对齐,程序可以运行,但输入之后就无反应了
break 只是跳出它目前所在的循环体而已。if 是在 for 内部,而 break 是在 if 内部,所以 break 只是跳出 if 的判断而已。当跳出 if 判断,将继续 for 循环,检查 judge_char 是否需要 +1。如果没有缩进,break 将跳出 for 循环,那么只会对密码的第一个元素进行比较。
其实不需要 break,因为此代码只是单纯地询问是否有特殊符号或什么的,如果有,加一,没有就没有动作嘛,那没有就换下一个嘛
for each in password:
if each in symbols:
judge_chars += 1
这样是等价的
|
|