【发布时间】:2016-10-12 05:26:03
【问题描述】:
我查看了与我的问题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()
【问题讨论】:
-
你为什么有
return ('stepX' == True)?这与return False相同,因为字符串不等于任何布尔值。 -
您也在 False 情况下返回元组。除此之外,您甚至不需要检查函数的返回值。