【发布时间】:2019-11-08 14:49:21
【问题描述】:
我正在尝试在 python 中生成一个密码检查器,它使用以下规则来确定用户密码的强度。
如果用户的密码少于 6 个字符,则为 WEAK。 如果用户的密码包含至少 13 个字符、至少 1 个小写字母、至少 1 个大写字母和至少 1 个数字,则该用户的密码为 STRONG。 如果用户既不是强密码也不是弱密码,则该用户具有中密码。
我生成了以下代码:
def strengthOfPassword ( pass ):
strongness = 0
up = 0
low = 0
num = 0
for i in pass:
if i.islower():
low += 1
if i.isupper():
up += 1
if i.isdigit():
num +=1
print (len(pass))
if len(pass) >= 13:
if up > 0 and low > 0 and num > 0:
strongness = "STRONG PASSWORD"
if len(pass) < 6:
strongness = "WEAK PASSWORD"
else:
strongness = "MEDIUM PASSWORD"
return strongness
strengthOfPassword("2Benji3all4Kiwi")
代码适用于大多数测试用例,但是对于字符串“2Benji3all4Kiwi”,代码错误地指出这是中等密码,而不是强密码,尽管它满足强密码的所有标准。这是为什么呢?
【问题讨论】:
-
相当有信心这段代码甚至不会运行
-
你为什么这么认为?
-
它失败了,因为
len(pass) < 6是 False,所以它移动到else子句。更改为elif len(pass) < 6。 (它也不适合我,因为pass是关键字) -
pass是保留字;您不能将其用作参数名称。
标签: python if-statement