程序检查密码强度(和/或运算符不起作用/检查字符串中的符号?



我正在制作一个密码程序,根据密码的长度以及大小写字母、数字和符号的数量来检查密码的强度。

以下是我到目前为止的程序,然而,每当我输入一个应该以"中等"返回的密码时,它都不起作用,相反,我会得到"弱"或"强"。

此外,我不知道如何检查字符串中的符号。关于如何实现这一点和实现该计划,有什么建议吗?我只要求简单的解释和建议,因为我只是一个初中初学者。

非常感谢你的帮助。

password = None
print()
print("nYour password should be between 6 and 12 characters .")
print()
password=(input("Please enter your password : "))
numbers= sum(1 for c in password if c.isdigit())
uppercase= sum(1 for c in password if c.isupper())
lowercase= sum(1 for c in password if c.islower())
if len(password) <6:
print("ntThe password is too short .")
print("tTry a longer password .")
print("ntLowercase Letters :  ", lowercase)
print("tUppercase Letters :  ", uppercase)
print("tNumbers: ", numbers)
if len(password) >12:
print("ntThe password is too long .")
print("tTry a shorter password .")
print("ntLowercase Letters :  ", lowercase)
print("tUppercase Letters :  ", uppercase)
print("tNumbers: ", numbers)
if len(password)>=6 and len(password)<=12:
if password.lower()== password or password.upper()==password or password.isdigit()==password:
print("ntYour password is weak . ")
print("ntLowercase Letters :  ", lowercase)
print("tUppercase Letters :  ", uppercase)
print("tNumbers : ", numbers)
elif password.lower()== password and password.upper()==password or password.isalnum()==password:
print("ntYour password is medium .")
print("ntLowercase Letters :  ", lowercase)
print("tUppercase Letters :  ", uppercase)
print("tNumbers : ", numbers)
else:
password.lower()== password and password.upper()==password and password.isalnum()==password
print ("ntYour password is strong .")
print("ntLowercase Letters :  ", lowercase)
print("tUppercase Letters :  ", uppercase)
print("tNumbers : ", numbers)

欢迎使用Stack Overflow Aidyn。我在您的代码中看到了一些问题。


条件

password.lower()== password and password.upper()==password or password.isalnum()==password

永远不会发生。第一部分password.lower()== password检查密码是否全部为小写。下一部分password.upper()==password检查它是否全部为大写。密码不能同时全部为小写和大写。


password.isalnum()返回True或False。因此,与其进行password.isalnum()==password,不如检查password.isalnum()==True


线

password.lower()== password and password.upper()==password and password.isalnum()==password

不在elif条件内,所以结果是True还是False都无关紧要,它对程序没有任何影响。


也许你想做的是

# If the password contains only lowercase characters or only uppercase or only digits, it is weak
if password.lower() == password or password.upper() == password or password.isdigit() == password:
...
# Otherwise, if the password does not have any symbols, it is medium strength
elif password.isalnum():
...
# Otherwise, it's strong.
else:
...

您可以通过检查符号数量

symbols = sum(1 for c in password if not c.isalnum())

最新更新