密码强度检验问题,虽然已经搜索过论坛,但还有一些不解,求求大佬帮助
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 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 length = len(passwd)
在验证过一次密码强度后,需要重启程序,不知道该怎么处理,是我缩进的问题吗?
因为你在 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)
iflength <= 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("无法识别,不属于三种密码中任何一种!!!") Twilight6 发表于 2020-5-25 17:49
如果你输入空格 因为你值判定一次 length =len(passwd) 长度 在 while 循环里没有重新给予 赋值 导致
...
如果我想表达中级密码是字母,数字和特殊符号间两两任意组合要怎么写这句话啊,大佬 ghser 发表于 2020-5-25 20:02
如果我想表达中级密码是字母,数字和特殊符号间两两任意组合要怎么写这句话啊,大佬
按你原本那样可以丫 x + y + z == 2
只是你其他地方要多改动,因为改了这个漏洞了部分
页:
[1]