Я посмотрел на другой пост, похожий на мой вопрос, Password check- Python 3, за исключением того, что мой вопрос включает проверку того, содержит ли пароль как прописные, так и строчные вопросы. Мой код следующий, но когда он выполняется, он не может распознать, что в нижнем и верхнем регистровом буквах указан пароль, он распознает только один тип. Как я получу его для распознавания обоих типов? Также существует более простой способ проверки кода, если все эти значения возникают без необходимости выполнять функции для каждого отдельного шага?В python, как вы проверяете, имеет ли строка как прописные, так и строчные буквы
def Get_Password():
return input("Enter your desired password: ")
def Count_Digits(password):
return sum(character.isdigit() for character in password)
def Valid_password_length(password):
if len(password) >= 10:
return ('step1' == True)
else:
return ('step1' == False, print("Invalid password: too short"))
def Valid_password_characters(password):
if password.isalnum():
return ('step2' == True)
else:
return ('step2' == False, print("Invalid password: illegal character detected"))
def Valid_password_numdigit(password):
if Count_Digits(password) >= 2:
return ('step3' == True)
else:
return ('step3' == False, print("Invalid password: Must have at least 2 digits"))
def Valid_password_lowercase(password):
for i in (password):
if i.islower() == True:
return ('step4' == True)
else:
return ('step4' == False, print("Invalid password: No lowercase characters detected"))
def Valid_password_uppercase(password):
for i in (password):
if i.isupper() == True:
return ('step5' == True)
else:
return ('step5' == False, print("Invalid password: No uppercase characters detected"))
def password_checker():
password = Get_Password()
Valid_password_length(password)
Valid_password_characters(password)
Valid_password_numdigit(password)
Valid_password_lowercase(password)
Valid_password_uppercase(password)
if 'step1' and 'step2' and 'step3' and 'step4' and 'step5' == True:
print("Congratulations! This password is valid")
password_checker()
Почему вы должны 'Возвращение ('stepX' == True)'? Это то же самое, что и 'return False', поскольку строка не равна любому булевому. – mgilson
Также вы возвращаете кортежи в ложных случаях. Чтобы добавить к этому, вы даже не проверяете возвращаемые значения функций. –