【发布时间】:2014-10-03 20:40:25
【问题描述】:
我正在编写一个简单的条件密码检查器脚本,条件是:
- > 8 个字符
- 无特殊字符
- 至少两个大写字母
- 至少两个小写字母
- 至少两位数
我已经输入了所有代码,但它的执行效果并不像我需要的那样。例如,如果我输入“FunkyFunky56”,它会抛出一条消息,即它必须包含两个大写字母,而它显然是这样的。但是,当我用两个连续的大写字母“FUnkyfunky56”输入它时,它给了我有效的密码信息。谁能帮我理解我需要改变什么?
代码:
import string
def longPass(password):
'Password must be at least 8 characters'
return len(password) > 8
def shortPass(password):
'Password cannot be more than 24 characters'
return len(password) < 24
def lowerPass(password):
'Password must contain at least two lowercase letters'
return len(set(string.ascii_lowercase).intersection(password)) > 1
def upperPass(password):
'Password must contain at least two uppercase letters'
return len(set(string.ascii_uppercase).intersection(password)) > 1
def numPass(password):
'Password must contain at least two digits'
return len(set(string.digits).intersection(password)) > 1
def specPass(password):
'Password must not contain any special characters'
return len(set(string.punctuation).intersection(password)) < 1
def test_password(password, tests=[longPass, shortPass, lowerPass, upperPass, numPass, specPass]):
for test in tests:
if not test(password):
print(test.__doc__)
return False
return True
def main():
password = input('Please enter a password to be checked: ')
if test_password(password):
print('Valid password!')
if __name__=="__main__":
main()
【问题讨论】:
标签: python string input passwords