|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
number = "0123456789"
letter = "abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
symbool = r"~!@#$%^&*()_=-/,.?\\<>;:[]{}|"
x = 0
y = 0
z = 0
while True:
passwd = input("请输入密码:")
length =len(passwd)
while(passwd.isspace()or length == 0):
passwd=input("您输入的密码为空,请重新输入:")
if length <= 8 and (passwd.isdigit() or passwd.isalpha()):
print("这是一个低级密码")
break
continue
if length > 8:
for each in passwd:
if each in number:
x += 1
break
for each in passwd:
if each in letter:
y += 1
break
for each in passwd:
if each in symbool:
z += 1
break
if x + y + z == 2:
print("这是一个中级密码")
break
continue
n = 1 if passwd[0] in letter else 0
if x + y + z == 3 and length >= 16 and n:
print("这是一个高级密码")
continue
print("无法识别,不属于三种密码中任何一种!!!")
运行后,如果第一遍密码输入为空,此后再输入密码,有时会返回无法识别,不属于三种密码中的一种,
还有,在验证过一次密码强度后,需要重启程序,不知道该怎么处理,是我缩进的问题吗?希望各位大佬帮忙解答一下
本帖最后由 Twilight6 于 2020-5-25 19:07 编辑
运行后,如果第一遍密码输入为空,此后再输入密码,有时会返回无法识别,不属于三种密码中的一种,
如果你输入空格 因为你值判定一次 length =len(passwd) 长度 在 while 循环里没有重新给予 赋值 导致
while(passwd.isspace()or length == 0) 条件里的 length == 0 一直成立 死循环 ,需要在循环下加上重新判断length在验证过一次密码强度后,需要重启程序,不知道该怎么处理,是我缩进的问题吗?
因为你在 continue 前面加上了 break 退出循环
还有个地方可以去掉:
- number = "0123456789"
- letter = "abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- symbool = r"~!@#$%^&*()_=-/,.?\\<>;:[]{}|"
- x = 0
- y = 0
- z = 0
- while True:
- passwd = input("请输入密码:")
- length = len(passwd)
- while (passwd.isspace() or length == 0):
- passwd = input("您输入的密码为空,请重新输入:")
- length = len(passwd)
- if length <= 8 or passwd.isdigit() or passwd.isalpha():
- print("这是一个低级密码")
- continue
- elif length > 8:
- for each in passwd:
- if each in number:
- x += 1
- break
- for each in passwd:
- if each in letter:
- y += 1
- break
- for each in passwd:
- if each in symbool:
- z += 1
- break
- if x + y + z > 1 and length < 16:
- print("这是一个中级密码")
- continue
- if x + y + z == 3 and length >= 16 :
- print("这是一个高级密码")
- continue
- print("无法识别,不属于三种密码中任何一种!!!")
复制代码
|
|