我看过与我的问题类似的另一篇文章,Password check- Python 3 ,除了我的问题涉及检查密码是否包含大写和小写问题。我的代码如下,但是执行时无法识别密码中的大小写字母,它只识别一种类型。我怎样才能让它识别这两种类型?还有一种更简单的方法可以让代码检查是否所有这些值都出现,而不必为每个单独的步骤创建函数?
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()
最佳答案
import sys
def Valid_password_mixed_case(password):
letters = set(password)
mixed = any(letter.islower() for letter in letters) and any(letter.isupper() for letter in letters)
if not mixed:
print("Invalid password: Mixed case characters not detected", file=sys.stderr)
return mixed
完整的解决方案:
import sys
def Get_Password():
return input("Enter your desired password: ")
def Count_Digits(password):
return sum(1 for character in password if character.isdigit())
def Valid_password_length(password):
correct_length = len(password) >= 10
if not correct_length:
print("Invalid password: too short", file=sys.stderr)
return correct_length
def Valid_password_characters(password):
correct_characters = password.isalnum()
if not correct_characters:
print("Invalid password: illegal character detected", file=sys.stderr)
return correct_characters
def Valid_password_numdigit(password):
sufficient_digits = Count_Digits(password) >= 2
if not sufficient_digits:
print("Invalid password: Must have at least 2 digits", file=sys.stderr)
return sufficient_digits
def Valid_password_mixed_case(password):
letters = set(password)
lower = any(letter.islower() for letter in letters)
upper = any(letter.isupper() for letter in letters)
if not upper:
print("Invalid password: No uppercase characters detected", file=sys.stderr)
if not lower:
print("Invalid password: No lowercase characters detected", file=sys.stderr)
return lower and upper
def password_checker():
password = Get_Password()
if Valid_password_length(password) and \
Valid_password_characters(password) and \
Valid_password_numdigit(password) and \
Valid_password_mixed_case(password):
print("Congratulations! This password is valid")
password_checker()
关于python - 在python中,你如何检查一个字符串是否同时包含大写和小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991064/