我正在尝试创建一个需要您输入密码的系统。如果全部是lower、upper或num,则打印弱,如果是两个条件,则为med,如果全部满足,则为强。只是好像没用。
弱者和强者起作用,然而媒介不起作用。
我不知道我错在哪里了。
def password():
print ('enter password')
print ()
print ()
print ('the password must be at least 6, and no more than 12 characters long')
print ()
password = input ('type your password ....')
weak = 'weak'
med = 'medium'
strong = 'strong'
if len(password) >12:
print ('password is too long It must be between 6 and 12 characters')
elif len(password) <6:
print ('password is too short It must be between 6 and 12 characters')
elif len(password) >=6 and len(password) <= 12:
print ('password ok')
if password.lower()== password or password.upper()==password or password.isalnum()==password:
print ('password is', weak)
elif password.lower()== password and password.upper()==password or password.isalnum()==password:
print ('password is', med)
else:
password.lower()== password and password.upper()==password and password.isalnum()==password
print ('password is', strong)
荷拉
最好的方法是使用正则表达式搜索
这是我当前使用的函数
编辑:
卢卡斯的一个建议是对特殊符号条件验证的一个更新
password.isalnum()
返回布尔值,因此password.isalnum()==password
将始终是False
。只要省略
==password
部分:下一步,它可以从不同时是所有的上和下,或者所有的上和数,或者所有的下和所有的数,所以第二个条件(中)是不可能的。也许你应该寻找一些大写、小写和数字的存在?
然而,首先要解决的是另一个问题。您正在测试密码是否为字母数字,仅由字符和/或数字组成。如果只想测试数字,请使用^{} 。
您可能需要熟悉string methods。有一些方便的
.islower()
和.isupper()
方法可供您尝试,例如:这比使用
password.upper() == password
更快、更简洁,下面将测试相同的内容:下一个需要学习的技巧是在字符串上循环,这样就可以测试单个字符:
如果将其与
any()
函数结合使用,则可以测试是否有一些字符是数字:我认为在测试密码强度时,你会发现这些技巧很方便。
以下是你所写内容的翻版:
输出(示例):
相关问题 更多 >
编程相关推荐