0
我正在寫一個簡單的條件密碼檢測腳本的條件存在:Python的條件密碼編程
- > 8個字符
- < 24個字符
- 沒有特殊字符
- 至少兩個上大寫字母
- 至少兩個小寫字母
- 至少兩位數字
我已經輸入了所有的代碼,但它並不像我需要的那樣進行預成型。例如,如果我輸入「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()
謝謝!這正是我所期待的。 – Ben 2014-10-03 22:13:34