Я работаю над программой python для проверки серии паролей в документе, чтобы узнать, являются ли они действительными. Они должны иметь длину 7 символов, содержать по крайней мере 1 букву с верхним регистром, 1 строчную букву, букву, 1 номер и другие символы. По какой-то причине цикл for заканчивается после проверки только первого символа, и я не могу понять, в чем проблема. Может кто-нибудь взглянуть на мой код и помочь мне понять это?Программа проверки пароля, для проблем с контуром
def detectLength(word):
if len(word) >= 7:
return True
else:
return False
def detectSpecial(word):
if word.isalnum:
return True
else:
return False
def detectCapital(word):
for i in range(0, len(word)+1):
if (ord(word[i]) >= 65 and ord(word[i]) <= 90):
return True
else:
return False
def detectLower(word):
for i in range(0, len(word)):
if (ord(word[i]) >= 97 and ord(word[i]) <= 122):
return True
else:
return False
def detectDigit(word):
for i in word:
if ord(i) >= 40 and ord(i) <= 57:
return True
else:
return False
def main():
print(format("Password Attempt", '20s'), format("Validity Result", '17s'), format("Reason", '15s'))
print("======================================================")
word = input()
while word != "ZZZZ":
if detectLength(word) == False:
Validity, Reason = "Invalid", "Length"
elif detectSpecial(word) == False:
Validity, Reason = "Invalid", "Special Char"
elif detectCapital(word) == False:
Validity, Reason = "Invalid", "No Uppercase"
elif detectLower(word) == False:
Validity, Reason = "Invalid", "No Lowercase"
elif detectDigit(word) == False:
Validity, Reason = "Invalid", "No Digits"
else:
Validity, Reason = "Valid", ""
print(format(word, '20s'), format(Validity, '20s'), format(Reason, '14s'))
word = input()
print("======================================================")
main()
Pro tip: сравнительные тесты уже возвращают 'True' или' False'; просто верните результат сравнения. Вам также необходимо * вызвать * 'word.isalnum()'. И вместо 'if something == False:', используйте 'if not something:'. –
Да, word.isalnum() нужно было назвать, но теперь он говорит, что попытки пароля с заглавными буквами за пределами первой буквы не являются буквенно-цифровыми. –